You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何让GMSMapView中的用户定位蓝点始终显示在标记层上方?

如何让GMSMapView中的用户定位蓝点始终显示在标记层上方?

这个问题我之前做地图聚类功能的时候也碰到过!默认的用户位置蓝点确实容易被聚类标记或者集群块挡住,尤其是缩小地图到集群出现的级别时,完全看不到蓝点就很影响体验。给你两个亲测有效的解决办法:

  • 调整用户位置图层的层级优先级
    Google Maps iOS SDK里,用户位置蓝点是在一个独立的CALayer(也就是userLocationLayer)里的,我们可以通过修改这个图层的zPosition属性,把它的层级拉高,让它覆盖在所有聚类标记之上。
    你可以在地图初始化完成后,或者viewDidAppear这类合适的时机里添加这段代码:

    // 把zPosition设为一个足够大的值,确保超过聚类标记的层级
    mapView.userLocationLayer.zPosition = 1000
    

    原理很简单:zPosition是CALayer的核心属性,数值越大,图层在视觉堆叠顺序里就越靠上,只要这个值比所有聚类标记、集群块的层级都高,蓝点就会一直显示在最顶层。

  • 配合自定义集群样式时的注意事项
    如果你用了GMSClusterIconGenerator自定义了集群的外观,要注意别给集群标记设置过高的zIndex。如果你的集群标记zIndex设到了比如500,那把蓝点的zPosition设到1000就完全能压过它。要是不确定聚类标记的层级,直接把蓝点的zPosition设得高一点(比如1000、2000)就好,一般不会有冲突。

另外提醒一下:如果你的地图上还有其他自定义的图层或者标记,也要确保它们的zPosition/zIndex低于蓝点的设置值,这样蓝点才能一直保持最上层的显示效果。

内容来源于stack exchange

火山引擎 最新活动