谷歌地图:如何更改标记的 z-index?

Posted

技术标签:

【中文标题】谷歌地图:如何更改标记的 z-index?【英文标题】:Google Maps: How can I change the z-index of a Marker? 【发布时间】:2011-01-24 10:11:54 【问题描述】:

谷歌地图上有大约 100 个标记,还有一个特殊标记需要可见。目前,当地图缩小时,它周围的标记会完全或部分隐藏它。我需要该标记完全可见,并且我认为将其放在所有其他标记之上应该可以解决问题。但我找不到修改其堆叠顺序(z-index)的方法。

【问题讨论】:

Google Maps API v3 解决方案在这里:salman-w.blogspot.com/2012/07/… 【参考方案1】:

这适用于 Google Maps API 2。

对于 Google Maps API 3,使用标记的 setZIndex(zIndex:number)。

见: http://code.google.com/apis/maps/documentation/javascript/reference.html#Marker

【讨论】:

【参考方案2】:

当您在顶部创建所需的标记时,请使用 GMarkerOptions 中的 zIndexProcess 选项。例如:

var pt = new GLatLng(42.2659, -83.74861);
var marker = new GMarker(pt, zIndexProcess: function()  return 9999; );
map.addOverlay(marker);

我相信默认设置是 z-index 是标记点的纬度,因此将单个标记放在前面应该是相当安全的。此外,这只是一个简单的例子;您可以以任何简单或复杂的方式设置所有标记的 z-index。另一个例子是有两个函数:一个用于特殊标记,一个用于其余的。

var pt1 = new GLatLng(42.2659, -83.74861);
var pt2 = new GLatLng(42.3000, -83.74000);
var marker1 = new GMarker(pt1, zIndexProcess: specialMarker);
var marker2 = new GMarker(pt2, zIndexProcess: normalMarker);
map.addOverlay(marker1);
map.addOverlay(marker2);

function specialMarker() 
  return 9999;


function normalMarker() 
  return Math.floor(Math.random()*1000);

【讨论】:

啊...这看起来很有希望。但我想知道硬编码 9999 是否可以。是否可以使用 z-index >= 9999 的标记? 有人暗示我可以使用 GOverlay.getZIndex() 函数来查找要在给定纬度上呈现的标记的 z-index,但无法获得工作:(【参考方案3】:

除了 jhanifen 的回答之外,如果你想让你的一个特殊标记位于所有其他标记之上,请将它的 zIndex 设置为 google.maps.Marker.MAX_ZINDEX + 1。这将确保它位于顶部地图上的任何标记。

【讨论】:

以上是关于谷歌地图:如何更改标记的 z-index?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改谷歌地图标记上的图标

如何更改谷歌地图中标记的颜色?

如何更改谷歌地图默认的当前位置标记颜色

点击标记时如何更新谷歌地图标记图像

在 android 谷歌地图中更改集群管理器项目图标

当用户单击某些链接时更改谷歌地图标记图标