2016-07-01 123 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

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