我的android应用程序使用GoogleMap
和Polygons
来显示用户感兴趣的区域。如果用户单击Polygon
,则单击事件将由OnPolygonClickListener
处理,并显示信息对话框。我的问题在于Marker
显示了用户的当前位置,这阻止了将点击事件传递到下面的Polygon
。
侧面注:标记的单击区域似乎也大于可见区域。实际上,这个圆圈几乎挡住了下方的整个正方形。
到目前为止我尝试过的事情:
捕获点击事件并忽略它
getMap().setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
return true;
}
});
在这种情况下不起作用,因为我们可以返回false触发默认行为(放大标记),或者返回true忽略单击事件,因为-per documentation-每次单击仅一个事件
那么,有没有办法使Polygon
下方的Marker
可点击或至少将可点击标记区域减小到可见大小?
答案 0 :(得分:0)
GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
GoogleMap mymap = ..//)init your app
mymap.setOnPolygonClickListener(new OnPolygonClickListener(){
void onPolygonClick(Polygon polygon)
{
//do whatever you want with polygon
}
});
答案 1 :(得分:0)
根据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
}
}