我想要实现的是在地图上显示2种标记。
1)显示从数据库中绘制的事件的红色标记(完成 - itemizedOverlay)
2)橙色标记,它将动态显示用户在地图上的位置(itemizedOverlay2)。
我正在使用ItemizedOverlay来拥有2个不同的图层(一个用于事件,一个用于用户位置),但是我对显示用户位置的动态标记有问题。
ISSUE:
当LocationListener成功获取纬度/经度并在地图上放置一个点但前一个点仍然存在时,会发生什么。所以我有一条显示用户位置的标记。
我已经实现了一些搜索互联网的方法,但在调用onLocationChanged时没有发生过这种情况。
class myLocationListener implements LocationListener{
OverlayItem overlayItem;
@Override
public void onLocationChanged(Location location) {
if (location != null){
mapOverlays.remove(itemizedOverlay2);
mapView.invalidate();
lat = location.getLatitude();
longi = location.getLongitude();
GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6));
mControl.animateTo(point);
overlayItem = new OverlayItem(point, "My Location", "This is probably where you are");
itemizedOverlay2.addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay2);
}
}
我知道您可能需要更多我的代码,但让我们留在这个区块看看有人看到我弄错了。
谢谢。
答案 0 :(得分:1)
您还没有发布itemizedOverlay2所属的类的代码,但我猜它扩展了ItemizedOverlay。由于它有一个addOverlay()方法,我也猜测它有一个.clear()方法。
如果是这样,你应该在添加新位置之前调用clear()
itemizedOverlay2.clear();
itemizedOverlay2.addOverlay(overlayItem);
答案 1 :(得分:0)
使用内置课程MyLocationOverlay
:
position = new MyLocationOverlay(this, mapView);
position.enableMyLocation();
mapOverlays.add(position);