我目前正在开发一个Android应用程序,允许用户在地图上绘制带有标记的折线。现在,我想实现一个功能,即无论何时拖动标记,折线都可以拖动,并在调用onMarkerDragEnd()方法时更新折线。有谁知道我怎么能做到这一点?以下是我的代码片段。谢谢!
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);
}
}
});
答案 0 :(得分:1)
首先使Polyline drawRoute成为一个字段而不是局部变量。 然后你可以通过调用drawRoute.setPoints(arrayPoints)来更新onMarkerDragEnd里面的折线。
然后你还需要一个Java-Map,它可以跟踪哪个标记负责数组中的哪个点。映射将使用marker-ID作为键,将array-index作为值。 (您从map.addMarker返回的标记中获取标记ID) 拖动标记时,您可以使用marker-ID和Java-Map查找arrayPoints中相应Point的索引。这样,您可以在数组中交换点并再次调用drawRoute.setPoints。