2013-09-25 42 views
1

我想在可能調整大小的Google地圖上繪製多邊形。通過onMarkerClick成功刪除任何標記,但我無法通過將標記拖到另一個地方來更改標記位置。 這裏是我的代碼:android google maps v2:調整多邊形的大小

 PolygonOptions polygon = new PolygonOptions(); 
     Polygon my_polygon ; 
     polygon.fillColor(Color.RED); 
.... 
@Override 
public boolean onMarkerClick(Marker arg0) { 
    my_polygon.remove(); 
    arg0.remove(); 
    polygon.getPoints().remove(arg0.getPosition()); //it's ok, marker deleted 

    return true; 
} 

@Override 
    public void onMarkerDrag(Marker marker) 
    { 
     polygon.getPoints().remove(marker.getPosition()); //marker still in polygon list 

    } 
    @Override 
    public void onMarkerDragStart(Marker marker) 
    { 

    polygon.getPoints().remove(marker.getPosition()); //marker still in polygon list 


    } 
    @Override 
    public void onMarkerDragEnd(Marker marker) 
    { 
     my_polygon.remove(); 
     polygon.getPoints().remove(marker.getPosition()); //marker still in polygon list 
    polygon.add(marker.getPosition()); 
    my_polygon=map.addPolygon(polygon); //created new polygon which contains previous marker position 
    } 

所以,我怎麼能正確刪除previus標記點?

+0

開始時你說你正確地刪除標記。最後,你問如何正確刪除標記。我在這裏錯過什麼?! – bofredo

回答

0

首先將所有的LatLng點保存在LatLng的數組列表中。 不要刪除標記 onMarkerDragStart(標記標記)甚至將它保存到一個新的LatLng變量。現在在onMarkerDragEnd(Marker marker),首先得到新的點,然後刪除你保存在新的LatLng變量中的舊點。同時,您需要從已保存的數組列表中刪除相同的標記並添加此新值,然後再次繪製多邊形。

例如,假設你已經聲明瞭像這樣的latlng的陣列列表ArrayList points = new ArrayList();

然後繪製在onMarkerDragEnd(標記標記)一個ploygon像下面

Polygon polygon = map.addPolygon(new PolygonOptions() 
     .addAll(points) 
     .strokeColor(Color.BLACK) 
     .strokeWidth(5) 
     .fillColor(0x884d4d4d)); 

嘗試。希望它會有所幫助。 :)

+0

它沒有幫助。看起來像OnMarkerDragStart我已經改變了座標。 – user1910866

相關問題