我有很多多边形绘制。其中一些重叠。我希望能够在多边形内部检测到一个水龙头,并显示一个对话框,说明它在多边形内部被点击(应该在点击时检测到这个多边形)。通过 ItemizedIconOverlay 可以看到这种属性,我们可以通过点击OverlayItem来检测所有OverlayItem。如何在多边形上实现这个?
我绘制和添加多边形的方式是:
MyPolygon myNewPolygon = new MyPolygon(this);
myPolygon.setPoints(Polygon.pointsAsCircle(new GeoPoint(38.948714, -76.831918), 20000.0));
map.getOverlays().add(myPolygon);
myNewPolygon.setPoints(Polygon.pointsAsCircle(new GeoPoint(38.851777, -77.037878), 20000.0));
map.getOverlays().add(myNewPolygon);
答案 0 :(得分:1)
根据您想要达到的目标,有各种答案。
简单案例:如果您只想打开一个气泡,那么只需将InfoWindow设置为您的Polygon,如教程中所述。
如果您还需要其他内容:对于多边形,没有可用的侦听器,因为有标记和折线(请求增强,可能?)。
所以你可以做的是子类Polygon - 就像你使用MyPolygon一样。然后覆盖onTap方法 - 或者很可能是onSingleTapConfirmed - 并实现您需要的行为。
查看Polygon.onSingleTapConfirmed来源可能有所帮助(例如,点击测试)。
答案 1 :(得分:0)
你尝试过osmbonuspack吗?我肯定知道其中有多边形的onclick监听器。
答案 2 :(得分:0)
这就是我使用它的方式:
class CustomTapPolygon extends Polygon {
private CustomObject tag;
public CustomObject getTag() {
return tag;
}
public void setTag(CustomObject tag) {
this.tag = tag;
}
@Override
public boolean onSingleTapUp(MotionEvent e, MapView mapView) {
if (e.getAction() == MotionEvent.ACTION_UP && contains(e)) {
// YOUR CODE HERE
return true;
}
return super.onSingleTapUp(e, mapView);
}
}