从osmdroid MapView获取MyLocationOverlay

时间:2012-08-19 22:11:08

标签: android location overlay osmdroid mylocationoverlay

我正在创建一个应用程序,您可以使用MyLocationOverlay打开和关闭FollowLocation。

我的问题是,当我之前已经设置了MyLocationOverlay,并且想要打开FollowLocation,但我似乎无法在MapView的OverlayManager中找到/获取MyLocationOverlay对象。 OverlayManager似乎只返回Overlay对象,而不是MyLocationOverlay对象。

这就是我添加MyLocationOverlay的方式:

main_mapView = (MapView) findViewById(R.id.main_mapView);   
MyLocationOverlay mMyLocationOverlay = new MyLocationOverlay(mContext, main_mapView);
mMyLocationOverlay.enableMyLocation();
mMyLocationOverlay.enableCompass();
mMyLocationOverlay.main_mapView.getOverlays().add(mMyLocationOverlay);
main_mapView.invalidate();

稍后我想找到MyLocationOverlay做这样的事情,但如上所述,它会返回一个Overlay对象。

MyLocationOverlay mMyLocationOverlay = main_mapView.getOverlayManager().get(i);
mMyLocationOverlay.enableFollowLocation()

任何?

2 个答案:

答案 0 :(得分:2)

只需保留对您初始化的MyLocationOverlay的引用...无需从叠加管理器中取回它。

答案 1 :(得分:1)

或者,检查返回的Overlay对象的getClass()方法。它可能会向您显示所请求的Overlay实际上是MyLocationOverlay,在这种情况下您可以强制转换它。例如:

Overlay overlay = main_mapView.getOverlayManager().get(i);

if ( overlay.getClass().equals(MyLocationOverlay.class) ) {
    ((MyLocationOverlay)mMyLocationOverlay).enableFollowLocation()
}