6

是否可以在 osmdroid MapView Overlay 的绘制多边形中设置 EventListener ?我想在 Overlay 上打印,触摸它后我想改变它的颜色或处理 Polygon 后面的数据。

例如:

Poly1: ID = 1337, P1(0,0),P2(1,0),......,Pn(0,0)

Poly2: ID = 42 , P1(10,7),P2(18,39),......,Pn(10,7)

在 Poly1 中触摸后,我想知道按下了 ID 1337。想要改变它的颜色。

我怎么能实现这样的行为?

4

2 回答 2

0

使用文档绘制多边形

使用来监听地图点击

使用来确定触摸是否在其中一个多边形内

我不确定几何库是否可以在 android 上运行,因此请随意替换第三个组件。

编辑

误读了问题并将其与谷歌地图相关联,对不起。

于 2013-01-17T10:29:07.927 回答
0

以下是如何绘制和填充多边形(矩形示例):

ArrayList bgRectPoints = new ArrayList<>();

    GeoPoint pt1 = new GeoPoint(-15.953548, 126.036911);
    bgRectPoints.add(pt1);
    GeoPoint pt2 = pt1.destinationPoint(10000, 0);
    bgRectPoints.add(pt2);
    GeoPoint pt3 = pt2.destinationPoint(10000, 90);
    bgRectPoints.add(pt3);
    GeoPoint pt4 = pt3.destinationPoint(10000, 180);
    bgRectPoints.add(pt4);
    bgRectPoints.add(pt1);

    Polygon polygon = new Polygon();
    polygon.setPoints(bgRectPoints);
    polygon.setFillColor(Color.BLACK);

    mapView.getOverlays().add(polygon);

要接收触摸/点击初始化多边形,如下所示:

    Polygon polygon = new Polygon(){
        @Override
        public boolean onSingleTapConfirmed(MotionEvent event, MapView mapView) {
            Toast.makeText(context, "Polygon clicked!",Toast.LENGTH_SHORT).show();
            return super.onSingleTapConfirmed(event, mapView);
        }
    };

更多可以在这里找到

于 2018-02-13T10:45:14.370 回答