Drag Polyline onMarkerDrag Android Google Maps v2

冷暖自知 提交于 2019-12-02 06:39:46

问题


I'm currently developing an android application that would allow users to draw Polylines with Markers on the map. Right now, I would like to implement a feature whereby the polyline will be draggable whenever the marker is being dragged and update the Polyline when the onMarkerDragEnd() method is being called. Does anyone know how I can achieve this? Below is a snippet of my codes. Thanks!

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);
        }
        }

    });

回答1:


At first make Polyline drawRoute a field instead of a local variable. Then you can update the polyline inside onMarkerDragEnd by calling drawRoute.setPoints(arrayPoints).

Then you need in addition a Java-Map, which keeps track of which marker was responsible for which point in the array. The map would have the marker-ID as key and the array-index as value. (You get the marker ID from the marker which is returned by map.addMarker) When a marker is dragged, you can find out the index of the corresponding Point in arrayPoints using the marker-ID and said Java-Map. With that, you can exchange the point in the array and call drawRoute.setPoints again.



来源:https://stackoverflow.com/questions/21351744/drag-polyline-onmarkerdrag-android-google-maps-v2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!