在AndroidStudio上开发应用程序时,我正面临这个简单但烦人的问题。 我需要让我的应用程序能够在地图上绘制多个多边形。
你需要知道: 1.我不想拥有固定数量的多边形顶点。 2.我不想拥有固定数量的多边形,我想添加任意数量的多边形。 3.我事先并不知道多边形顶点的坐标,我想通过点击地图来获取它们。
到目前为止我做了什么: 首先,我编写了OnMapClick方法,它让我获取点击的点的坐标并将它们放在ArrayList(arrayPoints)中。然后另外两个方法(onPolylineClick和onMarkerClick)允许我"关闭"多边形,从而创建它:
@Override
public void onMapClick(LatLng latLng) {
MarkerOptions marker = new MarkerOptions();
marker.position(latLng);
mGoogleMap.addMarker(marker);
polylineOptions = new PolylineOptions();
polylineOptions.clickable(true);
polylineOptions.color(Color.BLACK);
polylineOptions.width(8);
arrayPoints.add(latLng);
polylineOptions.addAll(arrayPoints);
mGoogleMap.addPolyline(polylineOptions);
}
@Override
public void onPolylineClick(Polyline polyline) {
Polygon polygon = mGoogleMap.addPolygon(new PolygonOptions()
.clickable(true)
.addAll(arrayPoints));
stylePolygon(polygon);
}
@Override
public boolean onMarkerClick(Marker marker) {
if (arrayPoints.contains(marker.getPosition())) {
polygon = mGoogleMap.addPolygon(new PolygonOptions()
.clickable(true)
.addAll(arrayPoints));
stylePolygon(polygon);
polygoncoord = polygon.getPoints().toString();
Log.i("polygoncoord", polygon.getPoints().toString());
} else {
AddPointOfAnalysisLabel(label, point_coords);
}
return true;
}
现在的问题是,如果我在第一个多边形关闭后继续点击地图,我还会继续添加相同折线的新标记,而不是创建一个新的多边形。
我的想法是,也许我可以点击多边形来关闭它,然后这将允许我创建一个新的(不删除第一个)。因此我已经准备好了onPolygonClick方法,但是我真的知道要写什么来实现我的想法...... 你能帮我吗?
提前致谢!
答案 0 :(得分:0)
关闭多边形后,您需要重置arrayPoints
列表,以便开始收集下一个多边形的点。
arrayPoints.clear();