作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个自定义叠加层,它应该随着用户(玩家)四处移动而四处移动。但我现在拥有它的方式只是不断添加越来越多的叠加层,使图标具有拖尾效果。
我试图在每次位置更新时删除叠加层,但它似乎没有删除它。虽然,我不确定实际删除它是否是完成我想要做的事情的正确方法。有没有办法只更新位置并刷新 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/
考虑以下示例: .links { margin: 0; padding: 0; border: 1px solid gray; } .links ul
我是一名优秀的程序员,十分优秀!