//导航路线描述信息类 AMapNaviPath naviPath = mAMapNavi.getNaviPath(); List<NaviLatLng> wayPoint = naviPath.getWayPoint(); int size = wayPoint.size(); Log.d("TAGAA", "onClick: 途径点有几个 "+size); 现在有3个途经点, 我怎么删除其中一个?
时间: 2024-03-09 21:48:42 浏览: 137
你可以通过以下步骤来删除一个途经点:
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);
```
相关问题
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图标在地图上的叠放顺序,数值越大,叠放顺序越靠上。
看我的代码 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(666); markerList.add(marker); } } } @Override public boolean onMarkerClick(Marker marker) { LatLng position = marker.getPosition(); marker.setZIndex(999); Log.d("tagaa", "onMarkerClick: 这个是 "+position); return false; }
你的代码中已经对Marker的zIndex进行了设置,但可能是由于其他Marker的zIndex比它更高,导致无法完全遮挡住途经点。建议你在添加Marker时,将其zIndex设置为一个更大的值,如999,这样就可以确保它在地图上的层级更高,从而完全遮挡住途经点了。同时,如果你需要多次点击Marker时,每次都将zIndex设置为999,可以在onMarkerClick回调中添加如下代码:
```
marker.setZIndex(999);
```
这样,每次点击Marker时,都会将它的zIndex设置为999,确保它在地图上的层级更高,从而完全遮挡住途经点。
阅读全文