//导航路线描述信息类 AMapNaviPath naviPath = mAMapNavi.getNaviPath(); List<NaviLatLng> wayPoint = naviPath.getWayPoint(); int size = wayPoint.size(); Log.d("TAGAA", "onClick: 途径点有几个 "+size); 现在有3个途经点, 我怎么删除其中一个?
时间: 2024-03-09 22:48:42 浏览: 9
你可以通过以下步骤来删除一个途经点:
1. 获取当前导航路径的途经点列表 `wayPoint`。
2. 找到需要删除的途经点的索引,例如要删除第二个途经点,可以使用以下代码:
```
int indexToRemove = 1; // 索引从0开始
```
3. 将需要删除的途经点从列表中移除:
```
wayPoint.remove(indexToRemove);
```
注意,这个操作会改变原有的途经点列表 `wayPoint`,所以如果需要保留原有的途经点列表,可以先将其复制一份再进行操作。
4. 更新导航路径:
```
mAMapNavi.calculateDriveRoute(startList, endList, wayPoint, strategy);
```
这个函数会重新计算导航路径并更新地图显示。
总的代码示例:
```
AMapNaviPath naviPath = mAMapNavi.getNaviPath();
List<NaviLatLng> wayPoint = new ArrayList<>(naviPath.getWayPoint());
int indexToRemove = 1;
wayPoint.remove(indexToRemove);
mAMapNavi.calculateDriveRoute(startList, endList, wayPoint, strategy);
```
相关问题
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
如果你在执行 `wayPoint.remove(indexToRemove)` 时遇到 `java.lang.IndexOutOfBoundsException` 异常,可能是因为你尝试删除的途经点在列表中不存在。
你可以先检查一下 `wayPoint` 列表的大小,看看是否小于要删除的途经点的索引值。如果 `wayPoint` 列表的大小为1,而你尝试删除索引为1的途经点,那么就会出现 `java.lang.IndexOutOfBoundsException` 异常。
以下是一个检查 `wayPoint` 列表大小的示例代码:
```
AMapNaviPath naviPath = mAMapNavi.getNaviPath();
List<NaviLatLng> wayPoint = naviPath.getWayPoint();
int indexToRemove = 1;
if (wayPoint.size() > indexToRemove) {
wayPoint.remove(indexToRemove);
mAMapNavi.calculateDriveRoute(startList, endList, wayPoint, strategy);
} else {
Log.e("TAG", "wayPoint size is not larger than indexToRemove");
}
```
这样就可以避免 `java.lang.IndexOutOfBoundsException` 异常了。
private void addCustomMarkers(List<NaviLatLng> wayPoints) { if (wayPoints != null && wayPoints.size() > 0) { // 将自定义Marker的View转换为Bitmap Bitmap customMarkerBitmap = createBitmapFromView(customMarkerView); // 创建自定义Marker的BitmapDescriptor对象 BitmapDescriptor customMarkerIcon = BitmapDescriptorFactory.fromBitmap(customMarkerBitmap); for (NaviLatLng wayPoint : wayPoints) { // 在地图上添加自定义Marker marker = aMap.addMarker(new MarkerOptions() .position(new LatLng(wayPoint.getLatitude(), wayPoint.getLongitude())) .icon(customMarkerIcon) .anchor(0.5f, 1.0f)); // 自定义途经点的Marker样式 // 将Marker对象添加到维护途经点的列表中 marker.setZIndex(999); markerList.add(marker); } } }
这段代码是一个Android应用程序中添加自定义Marker到高德地图中的方法。该方法首先判断途经点列表是否为空,如果不为空,则遍历途经点列表,为每个途经点创建一个自定义Marker的BitmapDescriptor对象,并将该对象设置为Marker的图标。然后将Marker添加到地图上,并将Marker对象添加到维护途经点的列表中。其中,createBitmapFromView()函数是将自定义Marker的View转换为Bitmap的过程,BitmapDescriptorFactory.fromBitmap()函数是将Bitmap对象转换为BitmapDescriptor对象的过程。anchor()函数是设置Marker的锚点,即Marker图标的中心点在Marker位置上的相对位置。setZIndex()函数是设置Marker的叠放顺序,即Marker图标在地图上的叠放顺序,数值越大,叠放顺序越靠上。