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

Android 如何单击标记下方的Google地图多边形?,android,google-maps,marker,Android,Google Maps,Marker,我的android应用程序使用带有多边形的谷歌地图来显示用户感兴趣的区域。如果用户单击多边形,单击事件将由OnPolygonClickListener处理,并显示一个信息对话框。我的问题在于标记显示了用户的当前位置,该位置阻止了传递到下面多边形的单击事件 侧注:标记的单击区域似乎也比可见区域大。这个圆实际上几乎挡住了它下面的整个正方形。 到目前为止,我尝试的是: 捕获单击事件并忽略它 getMap().setOnMarkerClickListener(new OnMarkerClickLis

我的android应用程序使用带有多边形的谷歌地图来显示用户感兴趣的区域。如果用户单击
多边形
,单击事件将由
OnPolygonClickListener
处理,并显示一个信息对话框。我的问题在于
标记
显示了用户的当前位置,该位置阻止了传递到下面
多边形的单击事件

侧注:标记的单击区域似乎也比可见区域大。这个圆实际上几乎挡住了它下面的整个正方形。

到目前为止,我尝试的是:

  • 捕获单击事件并忽略它

    getMap().setOnMarkerClickListener(new OnMarkerClickListener() {
        public boolean onMarkerClick(Marker marker) {
            return true;
        }
    });
    
在这种情况下不起作用,因为我们可以返回false(触发默认行为)(放大标记)或true(忽略单击事件),因为每次单击只有一个事件

  • 更改多边形的z索引:不起作用,因为-同样根据文档-“与其他覆盖或形状相比,标记实际上被视为位于单独的z索引组中,而与其他覆盖的z索引无关”,因此单击事件始终首先传递给潜在的标记

那么,有没有办法使
标记下方的
多边形
可点击,或者至少将可点击标记区域缩小到可见大小?

根据MrUpsidown的建议,使用谷歌地图,我实施了手动验证,以手动触发
多边形
目标点击。在处理大量多边形时,我无法说明
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
            }
    }

根据MrUpsidown的建议并使用谷歌地图,我实施了手动验证,以手动触发
多边形
目标点击。在处理大量多边形时,我无法说明
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
            }
    }

那太不幸了。因此,减少可单击标记区域已经是不可能的。单击标记时,请检查其位置是否位于某个多边形的边界内,如果位于边界内,则触发多边形单击事件。我想这将验证为一个快速修复(假设我们使用PolyUtils)。谢谢你那太不幸了。因此,减少可单击标记区域已经是不可能的。单击标记时,请检查其位置是否位于某个多边形的边界内,如果位于边界内,则触发多边形单击事件。我想这将验证为一个快速修复(假设我们使用PolyUtils)。非常感谢。