Нарисуйте более одного многоугольника на карте - PullRequest
0 голосов
/ 08 июня 2018

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

Заранее спасибо!

1 Ответ

0 голосов
/ 08 июня 2018

Как только вы закроете свой полигон, вам нужно сбросить список arrayPoints, чтобы вы могли начать набирать очки для следующего полигона.

arrayPoints.clear();
...