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;
}
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();
}
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);
}
Aggregations