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

18

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


2
Google Maps API v3的解决方案在这里:http://salman-w.blogspot.com/2012/07/change-z-index-google-map-v3-markers.html - Salman A
3个回答

25

5

在创建所需置顶的标记时,使用 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 的标记? - Salman A
我曾被提示可能可以使用GOverlay.getZIndex()函数找到要在给定纬度上呈现的标记的 z-index,但未能使其正常工作 :( - Salman A

5

补充jhanifen的答案,如果您想让一个特殊标记置于所有其他标记之上,请将其zIndex设置为 google.maps.Marker.MAX_ZINDEX + 1。这将确保它在地图上处于所有标记之上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接