1

我正在创建一个应用程序,您可以在其中使用 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()

任何人?

4

2 回答 2

2

只需保留对您最初新建的 MyLocationOverlay 的引用...无需从覆盖管理器中取回它。

于 2012-08-23T14:32:44.337 回答
1

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

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

if ( overlay.getClass().equals(MyLocationOverlay.class) ) {
    ((MyLocationOverlay)mMyLocationOverlay).enableFollowLocation()
}
于 2012-10-17T14:51:01.307 回答