0

我目前正在開發一個android應用程序,允許用戶在地圖上繪製帶有標記的多義線。現在,我想實現一個功能,只要標記被拖動,polyline就可以拖動,並且在調用onMarkerDragEnd()方法時更新Polyline。有誰知道我能做到這一點?以下是我的代碼片段。謝謝!Drag Polyline onMarkerDrag Android谷歌地圖v2

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,它跟蹤哪個標記負責數組中的哪個點。該映射將具有標記ID作爲鍵和數組索引作爲值。 (您可以從map.addMarker返回的標記中獲取標記ID) 拖動標記時,可以使用marker-ID和Java-Map查找arrayPoints中相應Point的索引。用這個,你可以交換數組中的點並再次調用drawRoute.setPoints。

+0

正是我所需要的,非常感謝! – SpencerChantler123