0

我想要实现的是在地图上显示两种标记。

1) 显示从数据库中提取的事件的红色标记(完成 - itemizedOverlay)

2)橙色标记,将在地图上动态显示用户的位置(itemizedOverlay2)。

我正在使用 ItemizedOverlay 来拥有 2 个不同的图层(一个用于事件,一个用于用户位置),但是显示用户位置的动态标记存在问题。

问题:

发生的情况是 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);

            }

        }

我知道您可能需要更多我的代码,但让我们留在这个街区,看看是否有人看到我哪里出错了。

谢谢你。

4

2 回答 2

1

您还没有发布 itemizedOverlay2 所属类的代码,但我猜它扩展了 ItemizedOverlay。由于它有一个 addOverlay() 方法,我也猜测它有一个 .clear() 方法。

如果是这样,您应该在添加新位置之前调用 clear()

itemizedOverlay2.clear();
itemizedOverlay2.addOverlay(overlayItem);
于 2012-04-25T15:30:27.513 回答
0

使用内置类MyLocationOverlay

position = new MyLocationOverlay(this, mapView);
position.enableMyLocation();
mapOverlays.add(position);
于 2012-04-25T15:32:38.327 回答