我对适用于 Android 组件 MyLocationOverlay 的 GoogleMap API 有疑问。每次设备位置发生变化(并且用户位置超出可见部分或地图)时,我都想关闭 MyLocationOverlay 自动重新居中功能(到当前用户位置)。
当用户位置超出屏幕时,似乎没有标志可以关闭不需要的地图自动居中功能
例如
public class LocationTest extends MapActivity{
private MapView map;
private MapController controller;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = (MapView) findViewById(R.id.map);
final MyLocationOverlayUpdate overlay = new MyLocationOverlayUpdate(this, map);
overlay.enableMyLocation();
map.getOverlays().add(overlay);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
public class MyLocationOverlayUpdate extends MyLocationOverlay {
public MyLocationOverlayUpdate(Context context, MapView mapView) {
super(context, mapView);
}
public void drawMyLocation(Canvas canvas, MapView mapView,
Location location, GeoPoint geoPoint, long when) {}
}
我通过网络查看了这个问题,但没有找到提供的解决方案。
发现的附加信息:
我猜文档是错误的、错误的,或者只是过时的说法:
可选地,构造函数还可以使用 MapController 并使用它来保持“我的位置”点通过在地图离开屏幕时平移地图来保持可见
因为没有构造函数接受 MapController 作为参数,似乎我别无选择keeping the "my location" dot visible
。
- 我偶然发现了一种解决方法,方法是覆盖方法 drawMyLocation() 而不调用 super.drawMyLocation() 解决了重新定位地图的问题(不希望的“功能”关闭)。但是我必须重新实现 drawMyLocation() 方法,因此更改默认外观(并花费时间......)
也许有更明确的解决方案?