osmdroid Polygon - 在三角形中添加一个新点

osmdroid Polygon - adding a new point in a triangle

我可以使用 singleTapConfirmedHelper() 制作多边形。但我仍然有问题。添加第四个点(红色圆圈)时如何删除线(蓝色箭头)。添加第四个点后,该线并没有消失。我希望我解释得很好。谢谢。

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

您正在为每个添加的点绘制新的多边形,而不是删除旧的多边形。所以 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();