2016-07-01 57 views
1

所以我已經能夠通過開發人員的Android頁面定期更新我當前的位置,使您的應用程序位置感知。現在,只要我的位置發生變化,我就可以獲得該位置的經緯度。不過,我會使用Google地圖來執行此操作嗎?谷歌地圖:當前位置標記(GMaps的週期更新)

低於這條線實現了在我的地圖一個按鈕,找到我的當前位置,並在其上放置一個藍點/標記(不接受定期更新)

mMap.setMyLocationEnabled(真);

我應該在我的onLocationChanged()事件中放置什麼以使藍點更新爲新的 lat和long?

回答

2

藍點和精度圓由地圖自動管理,您無法更新或更改符號系統。實際上,它使用自己的LocationProvider自動進行管理,因此它可以獲得最佳的位置分辨率(不需要編寫代碼來更新它,只需使用mMap.setMyLocationEnabled(true);即可啓用它)。

如果你想嘲笑它的行爲,你可以寫這樣的事情(你應該禁用我的位置層做mMap.setMyLocationEnabled(false);):

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

所以這上面的代碼使藍點進行更新,而默認,藍點不更新?只知道最後一個位置? –

+0

不用擔心,我得到了它的工作 –