我在谷歌搜索并找到 answer ,我可以删除地图的所有多边形。
但我想从poly线中仅删除一条特定的线。例如,我想在给定代码中从第2个删除第3个LatLng。我想改变polyLine特定线的颜色或使其透明。我还想将clickListener
添加到 PolyLine
PolylineOptions rectOptions = new PolylineOptions()
.add(new LatLng(37.35, -122.0))
.add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
.add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
.add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
.add(new LatLng(37.35, -122.0)).width(5).color(Color.RED);; // Closes the polyline.
Polyline polyline = myMap.addPolyline(rectOptions);
主要目标是在点击或点按时remove/make it transparent
PolyLine的特定行。
PolylineOptions line= new PolylineOptions().add(HAMBURG,// these are latlong
KIEL,
KIEL2,
KIEL3
new LatLng(40.748963847316034,
-73.96807193756104)
)
.width(5).color(Color.RED);
Polyline polyline= googleMap.addPolyline(line);
我想删除KIEL1和KIEL2之间的界线
答案 0 :(得分:1)
您必须手动从折线中删除点。
编辑:
一步一步:
创建折线列表:
List<Polyline> mPolylines = new ArrayList<Polyline>();
将PolylineOptions添加到地图中:
Polyline polyline1 = myMap.addPolyline(rectOptions1);
Polyline polyline2 = myMap.addPolyline(rectOptions2);
Polyline polyline3 = myMap.addPolyline(rectOptions3);
然后将添加的折线保存到数组
mPolylines.add(polyline1);
mPolylines.add(polyline2);
mPolylines.add(polyline3);
现在您可以随时修剪折线:
// Get polyline1
List<LatLng> points = mPolylines.get(0).getPoints();
// Set the bounds of points to remove (inclusive)
int startPoint = 1, endPoint = 2; // will remove kiel1 and kiel2
// Remove the points
for (int i=startPoint; i<=endPoint; i++) {
points.remove(i);
}
// Added this line as getPoints returns a copy
mPolylines.get(0).setPoints(points);
现在理论上这应该可行。我发现这些点在setPoints之后实际上没有变化。
我甚至尝试过:
Polyline polyline = mPolylines.get(0);
// Get copy of the points
List<LatLng> points = polyline.getPoints();
mPolylines.get(0).remove();
mPolylines.remove(0);
for (int i=3000; i<7000; i++) {
points.remove(i);
}
// Create a PolylineOptions object with the new points
PolylineOptions polylineOptions = new PolylineOptions().addAll(points);
mPolylines.add(0, mMap.addPolyline(polylineOptions));
令我惊讶的是,添加了一个新的Polyline(我可以通过改变的笔划宽度和颜色来判断),但它仍然使用了旧点,即使points.size()
返回了正确的(修剪过的)计数。
我不确定为什么会这样,也许我的代码中有些错误。您可以亲自尝试这些方法,看看您是否更幸运。