我的android应用程序使用GoogleMap
和Polygons
来显示用户感兴趣的区域。如果用户点击Polygon
,则OnPolygonClickListener
将处理click事件,并显示信息对话框。我的问题在于Marker
显示用户的当前位置,阻止点击事件传递到下面的Polygon
。
旁注:标记的点击区域似乎也大于可见区域。这个圆圈实际上几乎阻挡了它下方的整个方块。
到目前为止我尝试了什么:
getMap().setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
return true;
}
});
在这种情况下不起作用,因为我们可以返回false来触发默认行为(放大标记)或者true,它自动忽略click事件 - per documentation - 每次点击只有一个事件。
那么有没有办法让Polygon
低于Marker
可点击或至少将可点击标记区域缩小到可见尺寸?
根据MrUpsidown的建议并使用googlemaps PolyUtil我实施了手动验证以手动触发Polygon
定向点击。在处理大量多边形时,我无法分辨containsLocation()
的效率,但它暂时有效。
mMap.setOnMarkerClickListener { marker ->
if (marker == userLocation) {
mPolygons.forEach { polygon ->
if(PolyUtil.containsLocation(userLocation?.position, polygon.points, false)) {
// Do Polygon stuff here
return@forEach
}
}
true
} else {
// Do optional marker stuff here
true
}
}