2017-06-16 262 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的时候,我们甚至不添加它摆在首位? –