Search in sources :

Example 1 with Marker

use of org.osmdroid.views.overlay.Marker in project collect by opendatakit.

the class GeoPointOsmMapActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    if (savedInstanceState != null) {
        locationCount = savedInstanceState.getInt(LOCATION_COUNT);
    }
    try {
        setContentView(R.layout.geopoint_osm_layout);
    } catch (NoClassDefFoundError e) {
        ToastUtils.showShortToast(R.string.google_play_services_error_occured);
        finish();
        return;
    }
    map = findViewById(R.id.omap);
    if (helper == null) {
        // For testing:
        helper = new MapHelper(this, map, this);
        map.setMultiTouchControls(true);
        map.setBuiltInZoomControls(true);
        map.setTilesScaledToDpi(true);
    }
    marker = new Marker(map);
    marker.setIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_place_black_36dp));
    myLocationOverlay = new MyLocationNewOverlay(map);
    handler.postDelayed(new Runnable() {

        public void run() {
            GeoPoint point = new GeoPoint(34.08145, -39.85007);
            map.getController().setZoom(4);
            map.getController().setCenter(point);
        }
    }, 100);
    locationStatus = findViewById(R.id.location_status);
    TextView locationInfo = findViewById(R.id.location_info);
    locationClient = LocationClients.clientForContext(this);
    locationClient.setListener(this);
    ImageButton saveLocationButton = findViewById(R.id.accept_location);
    saveLocationButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Collect.getInstance().getActivityLogger().logInstanceAction(this, "acceptLocation", "OK");
            returnLocation();
        }
    });
    reloadLocationButton = findViewById(R.id.reload_location);
    reloadLocationButton.setEnabled(false);
    reloadLocationButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            map.getOverlays().add(marker);
            setClear = false;
            latLng = new GeoPoint(location.getLatitude(), location.getLongitude());
            marker.setPosition(latLng);
            captureLocation = true;
            isDragged = false;
            zoomToPoint();
        }
    });
    // Focuses on marked location
    showLocationButton = findViewById(R.id.show_location);
    showLocationButton.setVisibility(View.VISIBLE);
    showLocationButton.setEnabled(false);
    showLocationButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Collect.getInstance().getActivityLogger().logInstanceAction(this, "showLocation", "onClick");
            showZoomDialog();
        }
    });
    // not clickable until we have a marker set....
    showLocationButton.setClickable(false);
    // Menu Layer Toggle
    ImageButton layersButton = findViewById(R.id.layer_menu);
    layersButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            helper.showLayersDialog(GeoPointOsmMapActivity.this);
        }
    });
    zoomDialogView = getLayoutInflater().inflate(R.layout.geopoint_zoom_dialog, null);
    zoomLocationButton = zoomDialogView.findViewById(R.id.zoom_location);
    zoomLocationButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            zoomToLocation();
            map.invalidate();
            zoomDialog.dismiss();
        }
    });
    zoomPointButton = zoomDialogView.findViewById(R.id.zoom_point);
    zoomPointButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            zoomToPoint();
            map.invalidate();
            zoomDialog.dismiss();
        }
    });
    ImageButton clearPointButton = findViewById(R.id.clear);
    clearPointButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            map.getOverlays().remove(marker);
            marker.remove(map);
            if (location != null) {
                reloadLocationButton.setEnabled(true);
            // locationStatus.setVisibility(View.VISIBLE);
            }
            locationStatus.setVisibility(View.VISIBLE);
            map.getOverlays().remove(marker);
            marker.remove(map);
            setClear = true;
            isDragged = false;
            captureLocation = false;
            draggable = intentDraggable;
            locationFromIntent = false;
            overlayMyLocationLayers();
            map.invalidate();
        }
    });
    Intent intent = getIntent();
    if (intent != null && intent.getExtras() != null) {
        if (intent.hasExtra(GeoPointWidget.DRAGGABLE_ONLY)) {
            draggable = intent.getBooleanExtra(GeoPointWidget.DRAGGABLE_ONLY, false);
            intentDraggable = draggable;
            if (!intentDraggable) {
                // Not Draggable, set text for Map else leave as placement-map text
                locationInfo.setText(getString(R.string.geopoint_no_draggable_instruction));
            }
        }
        if (intent.hasExtra(GeoPointWidget.READ_ONLY)) {
            readOnly = intent.getBooleanExtra(GeoPointWidget.READ_ONLY, false);
            if (readOnly) {
                captureLocation = true;
                clearPointButton.setEnabled(false);
            }
        }
        if (intent.hasExtra(GeoPointWidget.LOCATION)) {
            double[] location = intent.getDoubleArrayExtra(GeoPointWidget.LOCATION);
            latLng = new GeoPoint(location[0], location[1]);
            reloadLocationButton.setEnabled(false);
            captureLocation = true;
            isDragged = true;
            // If data loaded, must clear first
            draggable = false;
            locationFromIntent = true;
        }
    }
    if (latLng != null) {
        marker.setPosition(latLng);
        map.getOverlays().add(marker);
        map.invalidate();
        captureLocation = true;
        foundFirstLocation = true;
        zoomToPoint();
    }
}
Also used : MyLocationNewOverlay(org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay) MapHelper(org.odk.collect.android.spatial.MapHelper) Intent(android.content.Intent) Marker(org.osmdroid.views.overlay.Marker) View(android.view.View) MapView(org.osmdroid.views.MapView) TextView(android.widget.TextView) GeoPoint(org.osmdroid.util.GeoPoint) ImageButton(android.widget.ImageButton) TextView(android.widget.TextView)

Example 2 with Marker

use of org.osmdroid.views.overlay.Marker in project collect by opendatakit.

the class GeoPointOsmMapActivity method longPressHelper.

@Override
public boolean longPressHelper(GeoPoint geoPoint) {
    if (marker == null) {
        marker = new Marker(map);
    }
    showLocationButton.setEnabled(true);
    map.invalidate();
    marker.setPosition(geoPoint);
    marker.setIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_place_black_36dp));
    marker.setDraggable(true);
    latLng = geoPoint;
    isDragged = true;
    setClear = false;
    captureLocation = true;
    map.getOverlays().add(marker);
    return false;
}
Also used : Marker(org.osmdroid.views.overlay.Marker)

Example 3 with Marker

use of org.osmdroid.views.overlay.Marker in project collect by opendatakit.

the class GeoShapeOsmMapActivity method overlayIntentPolygon.

private void overlayIntentPolygon(String str) {
    clearButton.setEnabled(true);
    clearButtonTest = true;
    String s = str.replace("; ", ";");
    String[] sa = s.split(";");
    for (int i = 0; i < (sa.length - 1); i++) {
        String[] sp = sa[i].split(" ");
        double[] gp = new double[4];
        String lat = sp[0].replace(" ", "");
        String lng = sp[1].replace(" ", "");
        gp[0] = Double.parseDouble(lat);
        gp[1] = Double.parseDouble(lng);
        Marker marker = new Marker(map);
        marker.setPosition(new GeoPoint(gp[0], gp[1]));
        marker.setDraggable(true);
        marker.setIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_place_black_36dp));
        marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
        marker.setOnMarkerClickListener(nullMarkerListener);
        mapMarkers.add(marker);
        // pathOverlay.addPoint(marker.getPosition());
        marker.setDraggable(true);
        marker.setOnMarkerDragListener(dragListener);
        map.getOverlays().add(marker);
    }
    update_polygon();
    map.getOverlays().remove(overlayEvents);
}
Also used : GeoPoint(org.osmdroid.util.GeoPoint) Marker(org.osmdroid.views.overlay.Marker) GeoPoint(org.osmdroid.util.GeoPoint) Paint(android.graphics.Paint)

Example 4 with Marker

use of org.osmdroid.views.overlay.Marker in project collect by opendatakit.

the class GeoTraceOsmMapActivity method addLocationMarker.

private void addLocationMarker() {
    if (myLocationOverlay.getMyLocation() != null) {
        Marker marker = new Marker(mapView);
        marker.setPosition(myLocationOverlay.getMyLocation());
        Float lastKnownAccuracy = myLocationOverlay.getMyLocationProvider().getLastKnownLocation().getAccuracy();
        myLocationOverlay.getMyLocationProvider().getLastKnownLocation().getAccuracy();
        marker.setIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_place_black_36dp));
        marker.setSubDescription(Float.toString(lastKnownAccuracy));
        marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
        marker.setDraggable(true);
        marker.setOnMarkerDragListener(dragListener);
        mapMarkers.add(marker);
        marker.setOnMarkerClickListener(nullMarkerListener);
        mapView.getOverlays().add(marker);
        List<GeoPoint> points = polyline.getPoints();
        points.add(marker.getPosition());
        polyline.setPoints(points);
        mapView.invalidate();
    }
}
Also used : GeoPoint(org.osmdroid.util.GeoPoint) Marker(org.osmdroid.views.overlay.Marker)

Example 5 with Marker

use of org.osmdroid.views.overlay.Marker in project OpenBikeSharing by bparmentier.

the class MapActivity method createStationMarker.

private Marker createStationMarker(Station station) {
    GeoPoint stationLocation = new GeoPoint((int) (station.getLatitude() * 1000000), (int) (station.getLongitude() * 1000000));
    Marker marker = new Marker(map);
    marker.setRelatedObject(station);
    marker.setInfoWindow(stationMarkerInfoWindow);
    marker.setPosition(stationLocation);
    marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER);
    marker.setTitle(station.getName());
    // free bikes
    marker.setSnippet(String.valueOf(station.getFreeBikes()));
    if (station.getEmptySlots() != -1) {
        // empty slots
        marker.setSubDescription(String.valueOf(station.getEmptySlots()));
    }
    /* Marker icon */
    int emptySlots = station.getEmptySlots();
    int freeBikes = station.getFreeBikes();
    if ((emptySlots == 0 && freeBikes == 0) || station.getStatus() == StationStatus.CLOSED) {
        marker.setIcon(getResources().getDrawable(R.drawable.ic_station_marker_unavailable));
    } else {
        double ratio = (double) freeBikes / (double) (freeBikes + emptySlots);
        if (freeBikes == 0) {
            marker.setIcon(getResources().getDrawable(R.drawable.ic_station_marker0));
        } else if (freeBikes >= 1 && ratio <= 0.3) {
            marker.setIcon(getResources().getDrawable(R.drawable.ic_station_marker25));
        } else if (ratio > 0.3 && ratio < 0.7) {
            marker.setIcon(getResources().getDrawable(R.drawable.ic_station_marker50));
        } else if (ratio >= 0.7 && emptySlots >= 1) {
            marker.setIcon(getResources().getDrawable(R.drawable.ic_station_marker75));
        } else if (emptySlots == 0 || emptySlots == -1) {
            marker.setIcon(getResources().getDrawable(R.drawable.ic_station_marker100));
        }
    }
    return marker;
}
Also used : GeoPoint(org.osmdroid.util.GeoPoint) Marker(org.osmdroid.views.overlay.Marker) GeoPoint(org.osmdroid.util.GeoPoint)

Aggregations

Marker (org.osmdroid.views.overlay.Marker)8 GeoPoint (org.osmdroid.util.GeoPoint)7 Paint (android.graphics.Paint)3 View (android.view.View)2 TextView (android.widget.TextView)2 MapView (org.osmdroid.views.MapView)2 Intent (android.content.Intent)1 ImageButton (android.widget.ImageButton)1 ImageView (android.widget.ImageView)1 StationsDataSource (be.brunoparmentier.openbikesharing.app.db.StationsDataSource)1 StationStatus (be.brunoparmentier.openbikesharing.app.models.StationStatus)1 MapHelper (org.odk.collect.android.spatial.MapHelper)1 MapPoint (org.odk.collect.geo.maps.MapPoint)1 IGeoPoint (org.osmdroid.api.IGeoPoint)1 MyLocationNewOverlay (org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay)1