因此,我已经能够通过开发者安卓页面定期更新我当前的位置,让您的应用位置更加清晰。现在,每当我的位置发生变化时,我都可以获得该位置的纬度和经度。但是,我是通过Google地图实现此目的的?
下面的这一行在我的地图上实现了一个按钮,该按钮可以找到我当前的位置并在其上放置一个蓝点/标记(不接收定期更新)
mMap.setMyLocationEnabled(真);
我应该在我的onLocationChanged()
事件中添加什么才能使用新 lat和更新来更新蓝点?
答案 0 :(得分: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);
}