2017-06-21 5 views
0

次のコードは、マップ上で3回目のクリック後にポリゴンを作成します。私は、新しいポリゴンを追加する(つまり、新しい頂点を追加する)必要があります。AndroidでGoogleマップポリゴンを展開する

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 
     } 
    } 

答えて

0

ポイントを配列に移動した後に既存のものを削除し、ネットクリックでポリゴンを再作成しました。

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; 
     }*/ 
    } 
関連する問題