【问题标题】:Drag Polyline onMarkerDrag Android Google Maps v2拖动折线 onMarkerDrag Android Google Maps v2
【发布时间】:2014-02-16 13:45:02
【问题描述】:

我目前正在开发一个允许用户在地图上使用标记绘制折线的 Android 应用程序。现在,我想实现一个功能,即只要拖动标记,就可以拖动折线,并在调用 onMarkerDragEnd() 方法时更新折线。有谁知道我怎么能做到这一点?下面是我的代码的 sn-p。谢谢!

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

    });

【问题讨论】:

  • 你需要一些代码来告诉你如何处理标记拖放事件吗?

标签: android google-maps-markers google-maps-android-api-2 google-maps-api-2


【解决方案1】:

首先让 Polyline drawRoute 成为一个字段而不是一个局部变量。 然后你可以通过调用 drawRoute.setPoints(arrayPoints) 来更新 onMarkerDragEnd 里面的折线。

然后您还需要一个 Java-Map,它会跟踪哪个标记负责数组中的哪个点。地图将以标记 ID 作为键,以数组索引作为值。 (您从 map.addMarker 返回的标记中获取标记 ID) 当一个标记被拖拽时,你可以使用marker-ID和Java-Map找出arrayPoints中对应Point的索引。这样,你可以交换数组中的点并再次调用drawRoute.setPoints。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-07
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    相关资源
    最近更新 更多