18

谷歌地图上有大约100个标记,另外还有一个需要可见的特殊标记。目前,当地图缩小时,它周围的标记完全或部分隐藏它。我需要这个标记是完全可见的,我认为将它保留在所有其他标记之上应该是个诀窍。但我无法找到修改其堆叠顺序(z-index)的方法。Google地图:如何更改标记的z索引?

+2

Google Maps API v3解决方案位于以下地址:http://salman-w.blogspot.com/2012/07/change-z-index-google-map-v3-markers.html – 2013-04-18 20:52:23

回答

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); 
} 
+0

嗯......这似乎很有前途。但我想知道9999的硬编码是否可以。是否有可能有z-index> = 9999的标记? – 2010-03-08 06:00:00

+0

我编辑了我上面的答案来解决这个问题。 – Mark 2010-03-08 12:40:41

+0

我被暗示我可能能够使用GOverlay.getZIndex()函数来查找要在给定的纬度上呈现的标记的z-index,但无法使其工作:( – 2010-03-09 05:58:59

5

添加到jhanifen的答案,如果你想获得你的一个特殊的记号是在所有其他的顶部,设置它的用zIndex来google.maps.Marker.MAX_ZINDEX + 1。这将确保它位于地图上的任何标记之上。