在onLocationChanged期间删除itemizedOverlay

时间:2012-04-25 15:01:35

标签: android itemizedoverlay

我想要实现的是在地图上显示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);

            }

        }

我知道您可能需要更多我的代码,但让我们留在这个区块看看有人看到我弄错了。

谢谢。

2 个答案:

答案 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);