接收OSMdroid的MyLocationNewOverlay

时间:2017-01-06 22:25:24

标签: android geolocation maps osmdroid mylocationoverlay

我正在使用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()函数,但无法弄清楚如何使用它。有什么想法吗?

0 个答案:

没有答案