在 Android 中扩展 Google 个地图多边形

Expanding Google Map Polygon in Android

下面的代码在地图上第三次单击后创建了一个多边形。我需要在第四次、第五次等点击后扩展(即添加新顶点)到现有多边形。

   public void onMapClick(LatLng point) {
       mTapTextView.setText("tapped, point=" + point);
       if (i==0){
           i=1;
           coordinates.add(point);
           googleMap.addMarker(new MarkerOptions()
                   .position(point)
                   .title(String.valueOf(point.latitude))
                   .snippet(String.valueOf(point.latitude))
                   .rotation((float) -15.0)
                   .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE))
           );
       } else if (i==1) {
           i=i+1;
           coordinates.add(point);
           googleMap.addPolyline((new PolylineOptions())
                   .add(coordinates.get(0), coordinates.get(1)));
       }else if (i==2){
           coordinates.add(point);
           polygon = googleMap.addPolygon((new PolygonOptions())
                   .add(coordinates.get(0), coordinates.get(1),coordinates.get(2)));
           i=i+1;
       }else{
           // How do I expand the existing polygon
       }
   }

我只是在将点移动到数组后删除了现有的,然后通过网络点击重新创建了一个多边形。

public int i=0;
    public Polygon polygon;
    public Polyline polyline;

    List<LatLng> coordinates=new ArrayList<LatLng>();
   public void onMapClick(LatLng point) {
       mTapTextView.setText("tapped, point=" + point);
       if (i==0){
           i=1;
           coordinates.add(point);
           googleMap.addMarker(new MarkerOptions()
                   .position(point)
                   .title(String.valueOf(point.latitude))
                   .snippet(String.valueOf(point.latitude))
                   .rotation((float) -15.0)
                   .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE))
           );
       } else if (i==1) {
           i=i+1;
           coordinates.add(point);
           polyline = googleMap.addPolyline((new PolylineOptions())
                   .add(coordinates.get(0), coordinates.get(1)));
       }else if (i>1){
           coordinates.add(point);
           polyline.remove();
           if (i>2){polygon.remove();};
           polygon = googleMap.addPolygon(new PolygonOptions()
               .addAll(coordinates)
            .strokeColor(Color.BLACK)
             .strokeWidth(10));
           //polygon = googleMap.addPolygon((new PolygonOptions())
              //     .add(coordinates.get(0), coordinates.get(1),coordinates.get(2)));
           i=i+1;
       }/*else{
           List<LatLng> polygonList = polygon.getPoints();

           Toast.makeText(getBaseContext(), polygonList.toString(), Toast.LENGTH_LONG).show();


           polygonList.add(point);
           polygon.remove();
           polygon = googleMap.addPolygon((new PolygonOptions()));
           polygon.setPoints(polygonList);
           i=i+1;
       }*/
   }