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
ためです。
- super.drawMyLocation() を呼び出さずにメソッド drawMyLocation() をオーバーライドすることで、マップを再センタリングする問題を解決する回避策を偶然見つけました(望ましくない「機能」がオフになります)。ただし、 drawMyLocation() メソッドを再実装する必要があるため、デフォルトの外観を変更します (そして時間を費やします...)
多分もっと明確な解決策がありますか?