是否可以在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被按下了。想改变它的颜色。
我怎么能实现这样的行为?
答案 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