【问题标题】:How to update an Android Itemized overlay which is displayed on a map如何更新显示在地图上的 Android 逐项叠加
【发布时间】:2011-03-21 17:44:34
【问题描述】:

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

我尝试在每次位置更新时删除覆盖,但似乎没有删除它。不过,我不确定实际上删除它是否是完成我想要做的事情的正确方法。有没有办法只更新位置并刷新地图?

    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);
}

任何指导将不胜感激。

【问题讨论】:

  • 您有使用 MyLocationOverlay 的位置应用程序的出色示例吗? --你知道吗,我一定是盯着这个问题太久了,谷歌的前三个结果看起来很有希望。

标签: android map location overlay


【解决方案1】:

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

MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableMyLocation();

在任何情况下,您都不需要每次都获取 Mapview、mapOverlays、drawable 和创建新的 itemizedOverlay。这应该只在你的 onCreate 或其他什么中完成一次。您应该做的只是在位置更改时更新 OverlayItem,然后调用 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();

【讨论】:

  • 我刚开始时并不知道 MyLocationOverlay。我在某处看到了 itemizedOverlay 的示例并使用了它。我应该能够轻松地将其转换为带有 Itemized 版本的 MyLocationOverlay 吗?
  • MyLocationOverlay 是否允许您使用自定义图像作为标记?该应用程序将有玩家(一个是你),其余的则通过从服务器下载位置放在地图上。
  • 否,但您可以覆盖 drawMyLocation() 方法以使用您自己的可绘制对象。
  • 您仍然需要调用并创建一个 ItemizedOverlay 至少一次,这就是您将从可绘制对象中设置地图图钉的地方。我不确定,但如果图形(地图图钉)不同,您可能需要为每个“玩家”使用 ItemizedOverlay。在这种情况下,您必须确保更新和重绘正确的叠加层。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多