Я сталкиваюсь с этой простой, но раздражающей проблемой при разработке приложения для 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, но я действительно знаю, что написать в нем, чтобы понять, что у меня на уме ... Не могли бы вы мне помочь?
Заранее спасибо!