我正在使用MyLocationNewOverlay
来显示用户的当前位置。当第一次找到位置时(例如,调用runOnFirstFix()
函数时),我已设法放置标记:
/* set start location */
mapController = mapView.getController();
mapController.setZoom(12);
GeoPoint startPoint = new GeoPoint(mucLocation.latitude, mucLocation.longitude);
mapController.setCenter(startPoint);
/* MyLocation overlay */
mLocationOverlay = new MyLocationNewOverlay(mapView);
mLocationOverlay.enableMyLocation();
// mLocationOverlay.enableFollowLocation();
mLocationOverlay.setDrawAccuracyEnabled(true);
mLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
Log.e("Location", "runOnFirstFix");
mapController.animateTo(mLocationOverlay.getMyLocation());
Marker currentLocation = new Marker(mapView);
currentLocation.setIcon(ContextCompat.getDrawable(mContext, R.drawable.ic_location));
currentLocation.setPosition(mLocationOverlay.getMyLocation());
currentLocation.setTitle("Hier bin ich");
mapView.getOverlays().add(currentLocation);
}
});
现在,我想在收到位置更新时更新标记的位置。据我所知,MyLocationOverlay
无法实现这一点,但我希望新的MyLocationNewOverlay
能够实现这一点。在Documentation中,我看到enableMyLocation()
允许接收位置更新,而enableFollowLocation()
则将地图保持在当前位置的中心位置。因此,叠加层似乎已经能够提供定期的位置更新。
我知道我可以使用Android的LocationListener
,但似乎此功能已经在MyLocationNewOverlay
内,因为它能够跟踪该位置。
有没有人知道是否有办法通过该叠加层接收位置更新,并且可以举例说明如何做到这一点?我注意到MyLocationNewOverlay.onLocationChanged()
函数,但无法弄清楚如何使用它。有什么想法吗?