2016-04-19 11 views
2

Ich verwende die Google Map API mit einigen Markern. Ich habe auch das infoWindow wie folgt überschrieben, um benutzerdefinierten Text anzuzeigen.Listener zu Karte berühren außerhalb der Markierungen

public void setUpMap() { 
    final GoogleMap map = mMapView.getMap(); 
    map.clear(); 
    map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
     private View mHolder; 

     @Override 
     public View getInfoWindow(final Marker marker) { 
      Log.d("MAP", "Map clicked on marker = " + maker); 
      etc.... 

Dies funktioniert gut und ich ändere das Symbol der einzelnen Marker, wenn Sie darauf klicken, damit sie visuell ausgewählt werden. Ich möchte jedoch alle Markierungen "abwählen". Das Problem ist, dass ich nicht weiß, wie man einen Listener hinzufügt, der von außerhalb der Markierungen ausgelöst wird.

Mit anderen Worten, mein Listener "getInfoWindow" erhält nur Trigger, wenn ein Marker berührt wird. Ich will das Gegenteil. Eine Art Zuhörer, der mir sagt, dass der Benutzer die Karte, aber nicht die Markierungen berührt hat.

Kann dies leicht gemacht werden? Alle Hinweise werden sehr geschätzt.

thx!

Antwort

4

Ok, ich nehme an, das ist wirklich einfach. Sie haben OnMarkerClickListener und OnMapClickListener.

Also, in Ihrem Fall registrieren Sie einfach OnMapClickListener und in onMapClick() können Sie tun, was Sie brauchen.

Noch eine Sache - wenn Sie Marker hinzufügen, speichern Sie sie in Arraylist - dann können Sie jederzeit tun, was auch immer benötigt wird - sogar entfernen Sie alle Marker aus der Karte.

0

Dies ist nur nützlich, wenn Sie mit dem Infofenster arbeiten. Wenn der Benutzer in meinem Fall auf den Marker klickt, wird das entsprechende Info-Fenster angezeigt. Wenn der Benutzer also außerhalb der Markierung auf die Karte klickt, wird das Infofenster geschlossen und das Ereignis von der Karte erkannt.

// Detect when Marker's Info Window is closed 
    googleMap.setOnInfoWindowCloseListener(new GoogleMap.OnInfoWindowCloseListener() { 
     @Override 
     public void onInfoWindowClose(Marker marker) { 
      // Do whatever you want to do here... 
     } 
    });