从android中的多个折线中删除折线

时间:2014-08-12 08:04:43

标签: android google-maps polyline

我在谷歌地图上有多条折线,在用户选择时我必须删除其中一条折线。如何识别哪条折线用户想要删除?

2 个答案:

答案 0 :(得分:4)

首先将所有折线保存在List中,如:

GoogleMap mMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();

List<Polyline> mPolylines = new ArrayList<Polyline>();
// Add polylines to the map and the list
mPolylines.add(mMap.addPolyline(polyOpts));
...
mPolylines.add(mMap.addPolyline(polyOpts));

然后注册一个地图点击监听器。它将测量与任何折线的任何点的最小距离。不幸的是,这是我知道如何做到这一点的唯一方法,因为没有折线点击监听器。

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng clickCoords) {
        for (PolylineOptions polyline : mPolylines) {
            for (LatLng polyCoords : polyline.getPoints()) {
                float[] results = new float[1];
                Location.distanceBetween(clickCoords.latitude, clickCoords.longitude,
                        polyCoords.latitude, polyCoords.longitude, results);

                if (results[0] < 100) {
                    polyline.setVisible(false);
                    Log.e(TAG, "Found @ "+clickCoords.latitude+" "+clickCoords.longitude);
                    return;
                }
            }
        }
    }
});

为了更加精确:

  • 使用不同缩放级别的最小距离进行更改。
  • 继续循环以找到距离最小的折线。

答案 1 :(得分:1)

将以下行添加到gradle -

compile 'com.google.android.gms:play-services:9.0.2'
代码中的

首先在列表中添加所有折线然后

map.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() {
                                @Override
                                public void onPolylineClick(Polyline polyline) {




                                     if(polyline.getId().equals(polyLinesList.get(index).getId())){

                                          polyLines.List.get(index).remove
                                        }
                                    }
                                }});