2017-08-24 3 views
0

Hier ist die Situation. Ich verwende Google Play-Standortdienste und MapBox-API-Karten. Wenn ich die App starten zeige ich sofort aktuellen Benutzer Standort auf einer Karte:Zwei Marker - aktueller Standort und Ziel auf MapBox Android

private void add() { 
    currentMarker = new MarkerOptions() 
      .position(currentLatLng); 

    mMapBoxMap.addMarker(currentMarker); 
} 

und aktualisiere meine Markerposition Standortwechsel:

private void update() { 
    moveCamera(); 
    mMapBoxMap.clear();//Clear map so no multiple current location markers 
    currentMarker = new MarkerOptions() 
      .position(currentLatLng); 

    mMapBoxMap.addMarker(currentMarker); 
} 

Dann, wenn die aktuelle Position angezeigt wird, lasse ich ein Benutzer auf einer Karte klicken, und sein Ziel (seine aktuelle Position origin) gesetzt:

mMapBoxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { 
       @Override 
       public void onMapClick(@NonNull LatLng point) { 
        MarkerOptions markerOptions = new MarkerOptions().position(point); 


        mapboxMap.addMarker(markerOptions); 
        destinationLat = point.getLatitude(); 
        destinationLng = point.getLongitude(); 


       } 
      }); 

Wenn ich auf einer Karte klicken, löscht es jeden Marker und legt eine neue Zielmarkierung, später auf einem curren t Die Ortsmarkierung erscheint.

Meine Fragen:

  1. Wie füge ich eine Zielmarkierung auf einer Karte so würde der aktuelle Standort Marker noch aktualisieren und ich würde nicht verschwinden jedes Mal auf einer Karte klicken? Zum Beispiel - ich fügen Sie eine Zielmarkierung auf einer Karte (jetzt gibt es zwei Marker) und wenn ich 10 Meter meine aktuelle Position Marker bewegt sich bewegen, aber Zielmarkierung bleibt

Antwort

2

Sie müssen die Referenz des Markers verwenden und Verwenden Sie removeMarker(), um nur bestimmte Marker zu entfernen. So haben Sie eine Variable:

Marker myDestinationMarker = mapboxMap.addMarker(markerOptions); 

und dann direkt darüber verwenden:

if (myDestinationMarker != null) { 
    mapboxMap.removeMarker(myDestinationMarker); 
} 

Hinweis zwei Dinge, Sie statt Hinzufügen/Entfernen von Markierungen und zum Zeigen Benutzerposition nutzen können, bieten wir die LocationLayer Plugin .

+0

Vielen Dank! Werde definitiv einen Blick darauf werfen. Auch noch eine Frage - – Power3000

+0

Auch noch eine Frage: Sollte ich mit meinem aktuellen Standort genauso umgehen? Sagen wir, ich habe meinen Zielmarker gesetzt und meine aktuelle Position ändert sich um einen Bruchteil. Ich möchte meinen Zielmarker auf einer Karte nicht verlieren Ich möchte nur meinen Standort aktualisieren – Power3000

Verwandte Themen