gpt4 book ai didi

android - 如何更新显示在 map 上的 Android 逐项叠加层

转载 作者:太空狗 更新时间:2023-10-29 15:34:03 24 4
gpt4 key购买 nike

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

我试图在每次位置更新时删除叠加层,但它似乎没有删除它。虽然,我不确定实际删除它是否是完成我想要做的事情的正确方法。有没有办法只更新位置并刷新 map ?

    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 ?它会为你做这一切。只需确保在 onPause 中调用 disableMyLocation()

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

在任何情况下,您都不需要每次都获取 Mapview、mapOverlays、drawable 并创建一个新的 itemizedOverlay。这应该只在您的 onCreate 或其他任何地方完成一次。您应该做的只是在位置更改时更新 OverlayItem,然后调用 mapView.invalidate() 重绘 View 。

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

关于android - 如何更新显示在 map 上的 Android 逐项叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5381474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com