java - 如何从 Osmdroid 地图中删除标记
问题描述
我正在创建一个需要在地图上设置标记的 Android 应用程序。由于我的应用程序需要离线功能,我需要使用 Osmdroid 来解决这个问题。现在我的问题是地图上的标记,我可以使用标记或 ItemizedOverlay 轻松添加它们,但我遇到的问题是我无法从地图中删除标记。
我用来添加标记的代码是这个:
Marker marker = new Marker(mapView);
marker.setPosition(new GeoPoint(41.3746312,19.7710733));
marker.setIcon(getResources().getDrawable(R.drawable.marker));
marker.setImage(getResources().getDrawable(R.drawable.marker));
marker.setTitle("Marker");
marker.setInfoWindow(null);
marker.showInfoWindow();
mapView.getOverlays().add(marker);
mapView.invalidate();
但我在删除它们时遇到了问题,因为删除它的唯一方法是:
mapView.getOverlays().clear();
而且我需要同时删除一个特定的标记而不是全部。
解决方案
添加标记时,将 ID 设置为您喜欢的任何内容。
MapView mapview = (MapView) findViewById(R.id.mapview); Marker marker = new Marker(mapview); marker.setId("String"); mapview.getOverlays().add(marker);
由于 Marker 将作为 Overlay 对象添加到 mapviews 叠加列表中,因此您可以循环遍历它,直到根据 Id 找到您的特定标记。
for(int i=0;i<mapview.getOverlays().size();i++){ Overlay overlay=mapview.getOverlays().get(i); if(overlay instanceof Marker&&((Marker) overlay).getId().equals("String")){ mapview.getOverlays().remove(overlay); } }
推荐阅读
- javascript - Discord.js - setNickname 没有足够的权限
- python - 在 NLP 中合并相关词
- google-sheets - 如何在整个工作表中找到具有特定值的单元格
- django - Nginx 在 Django 应用程序上使用 Gunicorn 重定向无法正常工作
- php - \Image::make 生产失败(Laravel)
- javascript - 识别 useStyles 中未使用的样式
- c++ - 为什么我的程序会跳过我的 switch 语句,直接进入默认状态?
- android - 我无法显示可扩展列表的第 4 级
- serverless - 如何调用 Lambda 函数然后使用无服务器返回
- python - 展平和重塑编码器的输入