2017-06-16 256 views
0

增加一個新點我可以使用singleTapConfirmedHelper()多邊形。但我仍然有問題。如何添加第四個點(紅色圓圈)時刪除線條(藍色箭頭)。添加第四個點後,該行不會消失。我希望我解釋得很好。謝謝。osmdroid多邊形 - 三角形

@Override 
    public boolean singleTapConfirmedHelper(GeoPoint p) { 

    Polygon circle = new Polygon(); 
    circle.setPoints(Polygon.pointsAsCircle(p, 2.0)); 
    circle.setFillColor(0x12121212); 
    circle.setStrokeColor(Color.RED); 
    circle.setStrokeWidth(2); 
    map.getOverlays().add(circle); 
    circle.setInfoWindow(new 
    BasicInfoWindow(org.osmdroid.bonuspack.R.layout.bonuspack_bubble, 
    map)); 
    circle.setTitle("Centered on " + p.getLatitude() + "," + 
    p.getLongitude()); 

    List<GeoPoint> pts = new ArrayList<>(); 
    pts.add(new GeoPoint(p.getLatitude(), p.getLongitude())); 

    Polygon polygon = new Polygon(ctx); 
    polygon.setTitle("This is a polygon"); 
    polygon.setSubDescription(Polygon.class.getCanonicalName()); 
    polygon.setFillColor(0x12121212); 
    polygon.setVisible(true); 
    polygon.setStrokeColor(Color.BLACK); 
    polygon.setStrokeWidth(4); 
    polygon.setInfoWindow(new 
    BasicInfoWindow(R.layout.bonuspack_bubble, map)); 
    polygon.setPoints(pts); 
    map.getOverlays().add(polygon); 

    map.invalidate(); 

    return true; 
} 

screenshot

回答

1

您正在繪製爲添加的每個點新的多邊形,你是不是刪除舊的。所以這個MapView會把它們全部繪製到另一個上面。在調用map.invalidate()之前,您應該從覆蓋列表中刪除先前繪製的多邊形。

Polygon polygon = new Polygon(ctx); 
polygon.setTitle("This is a polygon"); 
polygon.setSubDescription(Polygon.class.getCanonicalName()); 
polygon.setFillColor(0x12121212); 
polygon.setVisible(true); 
polygon.setStrokeColor(Color.BLACK); 
polygon.setStrokeWidth(4); 
polygon.setInfoWindow(new 
BasicInfoWindow(R.layout.bonuspack_bubble, map)); 
polygon.setPoints(pts); 
map.getOverlays().add(polygon); 
if (oldPolygon != null) { 
    map.getOverlays().remove(oldPolygon); 
} 
oldPolygon = polygon; 

map.invalidate(); 
+0

嗨!謝謝回覆。我在上面添加了if條件,現在它不會僅畫出線條點。 –

+1

對不起,我有拼寫錯誤,這是oldPolygon應刪除。 「map.getOverlays()。除去(oldPolygon)」。我會在響應中修復該行。 –

+0

OMG !!非常感謝你。正如你可以看到我張貼了這個6月16日,我因爲它的駕駛我瘋狂跳過我的項目這部分。我應該真的按照我的邏輯工作。謝謝約瑟夫。對此,我真的非常感激。但我仍然困惑,如何才能去除oldPolygon的時候,我們甚至不添加它擺在首位? –