2016-12-13 3 views
0

Ich arbeite an einer App, die das OSMbonuspacket verwendet. Ich habe der Karte Markierungen mit Beschreibungen hinzugefügt. Wenn Sie auf eine der Markierungen klicken, wird das Beschreibungsfeld angezeigt.Wie kann der setOnMarkerClickListener des OSMbonuspacket-Markers erweitert werden, ohne das Standardverhalten zu überschreiben?

Jetzt möchte ich eine andere Funktion aufrufen, wenn Sie auf einen Marker tippen. Sagen wir, ich möchte einen Toast zeigen. So habe ich die folgende setOnMarkerClickListener() Funktion:

marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker, MapView mapView) { 
     Toast.makeText(context, "Hallo", Toast.LENGTH_LONG).show(); 
     return false; 
    } 
}); 

Dies zeigt den Toast, wenn die Markierung klicken. Das Beschreibungsfeld wird jedoch nicht mehr angezeigt. Ich denke, dass ich das Standardverhalten überschreibe. mit dieser Funktion. Ich habe einmal eine App mit einer Google Maps-Integration erstellt und das gleiche ohne Probleme gemacht.

Kann jemand das mit dem OSMbonuspaket erreichen?

+1

zurückkehren Versuchen super.OnMarkerClick (Marker, mapview) – spy

+0

@ Spion, danke für deinen Vorschlag. Ich habe versucht, 'super.onMarkerClick (marker, mapView); 'anstelle von' false' in meiner 'inMarkerClick (...)' -Funktion zurückzugeben. Das hast du richtig gemeint? Aber der Compiler sagt, dass diese Funktion nicht existiert :( –

Antwort

2

Standard-Klick-Listener für Marker in osmdroid sieht wie folgt aus:

protected boolean onMarkerClickDefault(Marker marker, MapView mapView) { 
    marker.showInfoWindow(); 
    if(marker.mPanToView) { 
     mapView.getController().animateTo(marker.getPosition()); 
    } 

    return true; 
} 

so können Sie Ihre Zuhörer wie dies außer Kraft setzen:

marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker, MapView mapView) { 
     marker.showInfoWindow(); 
     mapView.getController().animateTo(marker.getPosition()); 
     Toast.makeText(context, "Hallo", Toast.LENGTH_LONG).show(); 
     return true; 
    } 
}); 
Verwandte Themen