if (!marker.isRemoved()) { //删除途经点 int deletePosition = -1; for (int i = 0; i < poiList.size(); i++) { if (poiList.get(i).getLatLng().equals(marker.getPosition())) { deletePosition = i; break; } } if (deletePosition != -1) { poiList.remove(deletePosition); int strategy = mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, true); mAMapNavi.calculateDriveRoute(start, end, poiList, strategy); } else { Log.e("TAG", "未找到对应的途经点"); } Log.e("TAG", "点击途经点:" + marker.getPosition()); } return true; } 这个删除不了poilist中的途经点,没有getLatLng() 方法,也没法添加,换个方式去实现
时间: 2024-02-10 22:13:28 浏览: 142
如果您无法使用 `getLatLng()` 方法,可以通过其他方式来删除 `poilist` 中的途经点。一种可能的方式是,将途经点的位置信息存储在 `poilist` 中,然后与地图上的标记进行比较,以确定要删除的途经点。
具体来说,您可以在往 `poilist` 中添加途经点时,将途经点的位置信息(经纬度)作为一个对象存储在 `poilist` 中,例如:
```
class PoiItem {
private double latitude;
private double longitude;
public PoiItem(double latitude, double longitude) {
this.latitude = latitude;
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public double getLongitude() {
return longitude;
}
}
```
然后在删除途经点时,遍历 `poilist`,与地图上的标记进行比较,以确定要删除的途经点。例如:
```
int deletePosition = -1;
for (int i = 0; i < poiList.size(); i++) {
PoiItem poiItem = poiList.get(i);
LatLng poiLatLng = new LatLng(poiItem.getLatitude(), poiItem.getLongitude());
if (poiLatLng.equals(marker.getPosition())) {
deletePosition = i;
break;
}
}
if (deletePosition != -1) {
poiList.remove(deletePosition);
int strategy = mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, true);
mAMapNavi.calculateDriveRoute(start, end, poiList, strategy);
} else {
Log.e("TAG", "未找到对应的途经点");
}
```
这样,您就可以通过比较经纬度来删除途经点了。
阅读全文