如何更新地图上显示的Android逐项覆盖

如何更新地图上显示的Android逐项覆盖,android,map,location,overlay,Android,Map,Location,Overlay,我有一个自定义覆盖,它应该随着用户(玩家)的移动而移动。但我现在拥有它的方式只是不断添加越来越多的覆盖,使图标具有拖尾效果 我试图删除每个位置更新上的覆盖,但它似乎没有删除它。尽管如此,我不确定是否真的移除它是完成我想要做的事情的正确方法。有没有办法只更新位置和刷新地图 public void drawMeOnMap() { MapView mapView = (MapView) findViewById(R.id.mapView); mapOverlays = mapV

我有一个自定义覆盖,它应该随着用户(玩家)的移动而移动。但我现在拥有它的方式只是不断添加越来越多的覆盖,使图标具有拖尾效果

我试图删除每个位置更新上的覆盖,但它似乎没有删除它。尽管如此,我不确定是否真的移除它是完成我想要做的事情的正确方法。有没有办法只更新位置和刷新地图

    public void drawMeOnMap()
{
    MapView mapView = (MapView) findViewById(R.id.mapView);
    mapOverlays = mapView.getOverlays();
    drawable = this.getResources().getDrawable(R.drawable.p18);
    itemizedOverlay = new IOverlay(drawable);

    if (mapOverlays.contains(itemizedOverlay))
    {
        mapOverlays.remove(itemizedOverlay);
    }

    GeoPoint point = new GeoPoint((int)(1E6*player.latitude), (int)(1E6*player.longitude));
    OverlayItem item = new OverlayItem(point, "", "");
    itemizedOverlay.addOverlay(item);
    mapOverlays.add(itemizedOverlay);
}
任何指导都将不胜感激。

为什么不直接使用?它会为你做这一切。只要确保在onPause中调用
disablelyLocation()

MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableMyLocation();
在任何情况下,您都不需要每次都获取Mapview、mapOverlays、drawable和创建新的ItemizeOverlay。在onCreate或其他任何程序中,只能执行一次。您应该做的只是在位置更改时更新覆盖项,然后调用mapView.invalidate()重新绘制视图

GeoPoint point = new GeoPoint((int)(1E6*player.latitude), (int)(1E6*player.longitude));
OverlayItem item = new OverlayItem(point, "", "");
itemizedOverlay.clear();
itemizedOverlay.addOVerlay(item);
mapView.invalidate();

当我开始工作时,我不知道我的位置。我在某个地方看到了一个itemizedOverlay示例,并使用了它。我应该能够很容易地将其转换为MyLocationOverlay和逐项列出的版本?MyLocationOverlay是否允许您为标记使用自定义图像?该应用程序将有玩家(一个是您),其余的玩家通过从服务器下载位置放在地图上。没有,但您可以覆盖drawMyLocation()方法以使用您自己的drawable。您仍将至少调用并创建一次ItemizedOverlay,这就是您将从drawables设置地图pin的地方。我不确定,但如果图形(地图别针)不同,您可能需要为每个“玩家”提供ItemizedOverlay。在这种情况下,您必须确保您正在更新和重新绘制正确的覆盖图。您是否有任何使用MyLocationOverlay的位置应用程序的突出示例?我发现的示例并不太有用,正如您所见,我并不完全理解它--你知道吗,我盯着这个问题看得太久了,谷歌的前三个结果看起来很有希望。