作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个 Android 应用程序,允许用户在 map 上绘制带标记的多段线。现在,我想实现一个功能,只要拖动标记,折线就可以拖动,并在调用 onMarkerDragEnd() 方法时更新折线。有谁知道我怎么能做到这一点?下面是我的代码 fragment 。谢谢!
googleMap.setOnMapClickListener(new OnMapClickListener(){
@Override
public void onMapClick(LatLng point) {
// TODO Auto-generated method stub
if(drawMode == true && arrayPoints.isEmpty()){
MarkerOptions marker=new MarkerOptions();
marker.position(point);
googleMap.addMarker(marker).setDraggable(true);
arrayPoints.add(point);
marker.draggable(true);
}
else if(drawMode == true){
Log.e("","IN SECOND");
MarkerOptions marker=new MarkerOptions();
marker.position(point);
googleMap.addMarker(marker).setDraggable(true);
arrayPoints.add(point);
PolylineOptions polylineOptions = new PolylineOptions();
polylineOptions.color(Color.BLUE);
polylineOptions.width(5);
polylineOptions.addAll(arrayPoints);
Polyline drawRoute = googleMap.addPolyline(polylineOptions);
}
}
});
最佳答案
首先让 Polyline drawRoute 成为一个字段而不是局部变量。然后您可以通过调用 drawRoute.setPoints(arrayPoints) 更新 onMarkerDragEnd 内的折线。
然后您还需要一个 Java-Map,它跟踪哪个标记负责数组中的哪个点。该 map 会将标记 ID 作为键,将数组索引作为值。 (您从 map.addMarker 返回的标记中获取标记 ID)当一个marker被拖动时,你可以通过marker-ID和Java-Map找到对应Point在arrayPoints中的索引。这样,您就可以交换数组中的点并再次调用 drawRoute.setPoints。
关于android - 拖动折线 onMarkerDrag Android 谷歌地图 v2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21351744/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!