我有一个谷歌V3地图,它使用steetView和一些地图标记。黄色的街景小人坐在地图上的标记上。有没有办法改变z索引,使我的标记位于pegman之上(这样就可以在不需要放大的情况下轻松点击它们)?
如果有什么不清楚的地方,这里有一把小提琴。。。。http://jsfiddle.net/spiderplant0/BRkCA/
经过一番试验,我想出了这个。。。
$("#map_canvas img[src*=cb_scout]").parent("div").css({'zIndex': -200});
$($("#map_canvas img[src*=cb_scout]")[1]).parent("div").parent("div").css({'zIndex': -200});
这迫使pegman坐在标记下方,但现在pegman不再可拖动,每次移动地图等时,pegman都会再次跳到标记上方。
要将pegman保持在标记下,您可以监视pov_changed事件,并在短延迟后重置z索引
$google.maps.event.addListener(panorama, 'pov_changed', function() {
var func=function(){
$("#map_canvas img[src*=cb_scout]").parent("div").css({'zIndex': -200});
}
setTimeout(func,1000);
}
});
在地图移动后,您还需要更改pegman的深度,这可以通过以下片段来完成
google.maps.event.addListener(map, 'idle', function() {
google.maps.event.trigger(panorama, 'pov_changed');
})
如果您希望能够拖动pegman,则必须首先通过切换按钮交换pegman的深度将其放置在标记上方,并向pov_changed事件处理程序添加一个异常,以防止切换按钮处于活动状态时pagman下降深度。
好吧,这可能有点古怪。。。(我希望我理解你在做什么)
1) 禁用街景控制2) 使用比现有标记更低的zIndex制作另一个控件。3) 使用伪街道视图标记的位置更新街道视图控件。
http://jsfiddle.net/z7Lp8/
您可以将标记的zIndex设置在google.maps.marker.MAX_zIndex上方,以便pegman保持在标记下方。MAX_ZINDEX是API将分配给标记的最大默认z索引。标记z索引仅在地图上所有标记禁用优化时才起作用。
从问题中分离出来说明:http://jsfiddle.net/brendaz/t4v8nhoq/
var marker1 = new google.maps.Marker({
position: new google.maps.LatLng(54.975, -2.020),
map: map,
zIndex: google.maps.Marker.MAX_ZINDEX + 1,
optimized: false
});