Ich benutze Osmdroid und habe einen MapEventsReceiver, MapEventsOverlay und einen LongPressHelper implementiert, um einen neuen Marker hinzuzufügen, wenn der Benutzer auf der Karte hält. Dies funktioniert das erste Mal und das erste Mal nur.OSMDROID - longPressHelper feuert nur das erste Mal, wenn es verwendet wird, um eine Markierung hinzuzufügen
Wenn ich die addMarker(p);
von meinem longPressHelper entferne, wird es jedes Mal ausgelöst.
Hat jemand eine Idee, warum das so passiert?
Code:
mapviewInit - genannt in onCreate private void mapviewInit() {
mapview = (MapView) findViewById(R.id.mapview);
mapview.setTileSource(TileSourceFactory.MAPNIK);
mapview.setBuiltInZoomControls(true);
mapview.setMultiTouchControls(true);
IMapController mapController = mapview.getController();
mapController.setZoom(16);
GeoPoint startPoint = new GeoPoint(48.8583, 2.2944);
mapController.setCenter(startPoint);
MapEventsReceiver meReceiver = new MapEventsReceiver() {
@Override
public boolean singleTapConfirmedHelper(GeoPoint p) {
return false;
}
@Override
public boolean longPressHelper(GeoPoint p) {
Toast toast = Toast.makeText(getApplicationContext(), "DEBUGDEBUGDEBUG", Toast.LENGTH_LONG);
toast.show();
addMarker(p);
return true;
}
};
addMarker - genannt von LongPressHelper public void addMarker (GeoPoint GeoPoint) {
Drawable dr = getResources().getDrawable(R.drawable.icn_crosshair_red);
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 100, 100, true));
mapview.getOverlays().clear();
mapview.invalidate();
selectedPosMarker = new Marker(mapview);
selectedPosMarker.setPosition(geoPoint);
selectedPosMarker.setInfoWindow(null);
selectedPosMarker.setIcon(d);
selectedPosMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
mapview.getOverlays().add(selectedPosMarker);
mapview.invalidate();
}
Ahhhh ok. Eigentlich wollte ich nur den Marker vom Bildschirm entfernen, damit er wieder hinzugefügt werden kann. Kann ich den Marker entfernen, ohne das gesamte Overlay zu entfernen? Vielen Dank für Ihre Hilfe und antworten Sie auf –
mapview.getOverlays(). Remove (selectedPosMarker); Sie können Ihren vorhandenen Marker auch einfach an die neue Position verschieben, ohne ihn zu entfernen/erstellen. – MKer