我在谷歌地图上有多条折线,在用户选择时我必须删除其中一条折线。如何识别哪条折线用户想要删除?
答案 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
}
}
}});