如何在MapView上绘制多边形,填充它,并在其上放置一个onTouch事件

时间:2013-01-17 10:23:07

标签: android overlay android-mapview polygon osmdroid

是否可以在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后我想知道aha ID 1337被按下了。想改变它的颜色。

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

2 个答案:

答案 0 :(得分:0)

使用this文档绘制多边形

使用this收听地图点击次数

使用this确定触摸是否位于其中一个多边形内

我不确定几何库是否可以在Android上运行,所以请随意更换第三个组件。

修改

误解了问题,并将其与谷歌地图相关联,抱歉。

答案 1 :(得分: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);
        }
    };

可以找到更多here