如何点击标记下方的Google地图多边形?

问题描述 投票:1回答:2

我的android应用程序使用GoogleMapPolygons来显示用户感兴趣的区域。如果用户点击Polygon,则OnPolygonClickListener将处理click事件,并显示信息对话框。我的问题在于Marker显示用户的当前位置,阻止点击事件传递到下面的Polygon

enter image description here

旁注:标记的点击区域似乎也大于可见区域。这个圆圈实际上几乎阻挡了它下方的整个方块。

到目前为止我尝试了什么:

  • 捕获click事件并忽略它 getMap().setOnMarkerClickListener(new OnMarkerClickListener() { public boolean onMarkerClick(Marker marker) { return true; } });

在这种情况下不起作用,因为我们可以返回false来触发默认行为(放大标记)或者true,它自动忽略click事件 - per documentation - 每次点击只有一个事件。

  • 更改多边形的z-index:不起作用,因为 - 再次根据文档 - “与其他叠加或形状相比,标记实际上被认为是在单独的z-index组中,而不管其他叠加的z-index”所以点击事件总是首先传递给潜在的标记。

那么有没有办法让Polygon低于Marker可点击或至少将可点击标记区域缩小到可见尺寸?

android google-maps marker
2个回答
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
            }
    }
© www.soinside.com 2019 - 2024. All rights reserved.