2016-07-01 7 views
1

So konnte ich regelmäßige Aktualisierungen meines aktuellen Standorts über die Entwickler-Android-Seite erhalten, wodurch der Standort Ihrer App bekannt wurde. Jetzt, wo sich mein Standort ändert, kann ich den Längen- und Breitengrad dieses Ortes bestimmen. Aber wen implementiere ich das mit Google Maps?Google Maps: Aktuelle Standortmarkierung (Zeitraumaktualisierungen für GMaps)

Diese Linie unten eine Taste auf meiner Karte implementiert, die meine aktuelle Position findet und legt einen blauen Punkt/Markierung auf sie (nicht empfängt regelmäßige Aktualisierungen)

mMap.setMyLocationEnabled (true);

Was soll ich in mein onLocationChanged() Ereignis einfügen, damit der blaue Punkt mit dem neuen Lat aktualisiert wird und lang?

Antwort

2

Der blaue Punkt und der Präzisionskreis werden automatisch von der Karte verwaltet und Sie können sie nicht aktualisieren oder ihre Symbologie ändern. Tatsächlich wird es automatisch mit seinem eigenen LocationProvider verwaltet, so dass es die beste verfügbare Ortsauflösung erhält (Sie müssen keinen Code schreiben, um es zu aktualisieren, aktivieren Sie es einfach mit mMap.setMyLocationEnabled(true);).

Wenn Sie Verhalten verspotten wollen es Sie so etwas schreiben kann (sollte die meine Lage Schicht tun mMap.setMyLocationEnabled(false); deaktivieren):

private BitmapDescriptor markerDescriptor; 
private int accuracyStrokeColor = Color.argb(255, 130, 182, 228); 
private int accuracyFillColor = Color.argb(100, 130, 182, 228); 

private Marker positionMarker; 
private Circle accuracyCircle; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // ... 

    markerDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.yourmarkericon); 
} 

@Override 
public void onLocationChanged(Location location) { 
    double latitude = location.getLatitude(); 
    double longitude = location.getLongitude(); 
    float accuracy = location.getAccuracy(); 

    if (positionMarker != null) { 
     positionMarker.remove(); 
    } 
    final MarkerOptions positionMarkerOptions = new MarkerOptions() 
      .position(new LatLng(latitude, longitude)) 
      .icon(markerDescriptor) 
      .anchor(0.5f, 0.5f); 
    positionMarker = mMap.addMarker(positionMarkerOptions); 

    if (accuracyCircle != null) { 
     accuracyCircle.remove(); 
    } 
    final CircleOptions accuracyCircleOptions = new CircleOptions() 
      .center(new LatLng(latitude, longitude)) 
      .radius(accuracy) 
      .fillColor(accuracyFillColor) 
      .strokeColor(accuracyStrokeColor) 
      .strokeWidth(2.0f); 
    accuracyCircle = mMap.addCircle(accuracyCircleOptions); 
} 
+0

sodass dieser Code oben ermöglicht es dem blauen Punkt aktualisiert werden, während standardmäßig , der blaue Punkt wird nicht aktualisiert? bekommt nur der letzte Ort bekannt? –

+0

keine Sorge, ich habe es funktioniert –