Search in sources :

Example 6 with Marker

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

the class OsmDroidMapFragment method createMarker.

private Marker createMarker(MapView map, MapPoint point, MapFeature feature, @IconAnchor String iconAnchor) {
    // A Marker's position is a GeoPoint with latitude, longitude, and
    // altitude fields.  We need to store the standard deviation value
    // somewhere, so it goes in the marker's sub-description field.
    Marker marker = new Marker(map);
    marker.setPosition(toGeoPoint(point));
    marker.setSubDescription(Double.toString(point.sd));
    marker.setDraggable(feature != null);
    marker.setIcon(ContextCompat.getDrawable(map.getContext(), R.drawable.ic_map_point));
    marker.setAnchor(getIconAnchorValueX(iconAnchor), getIconAnchorValueY(iconAnchor));
    marker.setOnMarkerClickListener((clickedMarker, mapView) -> {
        int featureId = findFeature(clickedMarker);
        if (featureClickListener != null && featureId != -1) {
            featureClickListener.onFeature(featureId);
            // consume the event
            return true;
        }
        return false;
    });
    marker.setOnMarkerDragListener(new Marker.OnMarkerDragListener() {

        @Override
        public void onMarkerDragStart(Marker marker) {
        }

        @Override
        public void onMarkerDrag(Marker marker) {
            // When a marker is manually dragged, the position is no longer
            // obtained from a GPS reading, so the standard deviation field
            // is no longer meaningful; reset it to zero.
            marker.setSubDescription("0");
            updateFeature(findFeature(marker));
        }

        @Override
        public void onMarkerDragEnd(Marker marker) {
            int featureId = findFeature(marker);
            updateFeature(featureId);
            if (dragEndListener != null && featureId != -1) {
                dragEndListener.onFeature(featureId);
            }
        }
    });
    map.getOverlays().add(marker);
    return marker;
}
Also used : Marker(org.osmdroid.views.overlay.Marker) IGeoPoint(org.osmdroid.api.IGeoPoint) Paint(android.graphics.Paint) MapPoint(org.odk.collect.geo.maps.MapPoint) GeoPoint(org.osmdroid.util.GeoPoint)

Example 7 with Marker

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

the class GeoTraceOsmMapActivity method overlayIntentTrace.

public void overlayIntentTrace(String str) {
    String s = str.replace("; ", ";");
    for (String sa : s.split(";")) {
        String[] sp = sa.split(" ");
        double[] gp = new double[4];
        String lat = sp[0].replace(" ", "");
        String lng = sp[1].replace(" ", "");
        String altStr = sp[2].replace(" ", "");
        String acu = sp[3].replace(" ", "");
        gp[0] = Double.parseDouble(lat);
        gp[1] = Double.parseDouble(lng);
        Double alt = Double.parseDouble(altStr);
        Marker marker = new Marker(mapView);
        marker.setSubDescription(acu);
        GeoPoint point = new GeoPoint(gp[0], gp[1]);
        point.setAltitude(alt.intValue());
        marker.setPosition(point);
        marker.setOnMarkerClickListener(nullMarkerListener);
        marker.setDraggable(true);
        marker.setOnMarkerDragListener(dragListener);
        marker.setIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_place_black_36dp));
        marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
        mapMarkers.add(marker);
        List<GeoPoint> points = polyline.getPoints();
        points.add(marker.getPosition());
        polyline.setPoints(points);
        mapView.getOverlays().add(marker);
    }
    mapView.invalidate();
}
Also used : GeoPoint(org.osmdroid.util.GeoPoint) Marker(org.osmdroid.views.overlay.Marker)

Example 8 with Marker

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

the class StationActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_station);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    stationsDataSource = new StationsDataSource(this);
    settings = PreferenceManager.getDefaultSharedPreferences(this);
    station = (Station) getIntent().getSerializableExtra(KEY_STATION);
    map = (MapView) findViewById(R.id.mapView);
    final GeoPoint stationLocation = new GeoPoint((int) (station.getLatitude() * 1000000), (int) (station.getLongitude() * 1000000));
    mapController = map.getController();
    mapController.setZoom(16);
    /* map tile source */
    String mapLayer = settings.getString(PREF_KEY_MAP_LAYER, "");
    switch(mapLayer) {
        case MAP_LAYER_MAPNIK:
            map.setTileSource(TileSourceFactory.MAPNIK);
            break;
        case MAP_LAYER_CYCLEMAP:
            map.setTileSource(TileSourceFactory.CYCLEMAP);
            break;
        case MAP_LAYER_OSMPUBLICTRANSPORT:
            map.setTileSource(TileSourceFactory.PUBLIC_TRANSPORT);
            break;
        default:
            map.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
            break;
    }
    map.setMultiTouchControls(true);
    /* Station marker */
    Marker marker = new Marker(map);
    marker.setPosition(stationLocation);
    marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER);
    marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker, MapView mapView) {
            return false;
        }
    });
    /* 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));
        }
    }
    map.getOverlays().add(marker);
    TextView stationName = (TextView) findViewById(R.id.stationName);
    TextView stationEmptySlots = (TextView) findViewById(R.id.stationEmptySlots);
    TextView stationFreeBikes = (TextView) findViewById(R.id.stationFreeBikes);
    stationName.setText(station.getName());
    setLastUpdateText(station.getLastUpdate());
    stationFreeBikes.setText(String.valueOf(station.getFreeBikes()));
    if (station.getEmptySlots() == -1) {
        ImageView stationEmptySlotsLogo = (ImageView) findViewById(R.id.stationEmptySlotsLogo);
        stationEmptySlots.setVisibility(View.GONE);
        stationEmptySlotsLogo.setVisibility(View.GONE);
    } else {
        stationEmptySlots.setText(String.valueOf(station.getEmptySlots()));
    }
    if (station.getAddress() != null) {
        TextView stationAddress = (TextView) findViewById(R.id.stationAddress);
        stationAddress.setText(station.getAddress());
        stationAddress.setVisibility(View.VISIBLE);
    }
    /* extra info on station */
    Boolean isBankingStation = station.isBanking();
    Boolean isBonusStation = station.isBonus();
    StationStatus stationStatus = station.getStatus();
    if (isBankingStation != null) {
        ImageView stationBanking = (ImageView) findViewById(R.id.stationBanking);
        stationBanking.setVisibility(View.VISIBLE);
        if (isBankingStation) {
            stationBanking.setImageDrawable(getResources().getDrawable(R.drawable.ic_banking_on));
            stationBanking.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    Toast.makeText(getApplicationContext(), getString(R.string.cards_accepted), Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    if (isBonusStation != null) {
        ImageView stationBonus = (ImageView) findViewById(R.id.stationBonus);
        stationBonus.setVisibility(View.VISIBLE);
        if (isBonusStation) {
            stationBonus.setImageDrawable(getResources().getDrawable(R.drawable.ic_bonus_on));
            stationBonus.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    Toast.makeText(getApplicationContext(), getString(R.string.is_bonus_station), Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    if ((stationStatus != null) && stationStatus == StationStatus.CLOSED) {
        stationName.setPaintFlags(stationName.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    }
    mapController.setCenter(stationLocation);
}
Also used : Marker(org.osmdroid.views.overlay.Marker) ImageView(android.widget.ImageView) View(android.view.View) MapView(org.osmdroid.views.MapView) TextView(android.widget.TextView) GeoPoint(org.osmdroid.util.GeoPoint) Paint(android.graphics.Paint) GeoPoint(org.osmdroid.util.GeoPoint) MapView(org.osmdroid.views.MapView) TextView(android.widget.TextView) ImageView(android.widget.ImageView) StationStatus(be.brunoparmentier.openbikesharing.app.models.StationStatus) StationsDataSource(be.brunoparmentier.openbikesharing.app.db.StationsDataSource)

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