在地图上绘制多个多边形

时间:2018-06-08 15:48:25

标签: java android google-maps polygon

在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 :(得分:0)

关闭多边形后,您需要重置arrayPoints列表,以便开始收集下一个多边形的点。

arrayPoints.clear();