将Google Maps pegman放在标记下方

时间:2012-02-19 21:57:58

标签: javascript google-maps google-maps-api-3 google-api google-maps-markers

我有一个使用steetView和一些地图标记的Google V3地图。 小黄色街景街景小人坐在地图上的标记。 有没有办法改变z指数,以便我的标记将高于街景小人 (这样可以轻松点击它们而不必放大)?

如果有什么不清楚,这里有一个小提琴.... 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});

这迫使街景小人坐在标记下面,但现在街景小人不再可以拖动,每次地图移动等,街景小人再次跳过标记。

3 个答案:

答案 0 :(得分:2)

要将街景小人保持在你的标记下,你可以观察pov_changed事件并在短暂延迟后重置z-index

$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);
    }
});

您还需要在地图移动后更改街景小人的深度,这可以通过以下代码段完成

google.maps.event.addListener(map, 'idle', function() {
                google.maps.event.trigger(panorama, 'pov_changed');
    })

如果你想能够拖动街景小人,你必须首先把它放在标记之上,方法是用一个切换按钮交换街景小人的深度,并在pov_changed事件处理程序中添加一个例外,防止pagman在切换按钮时掉落深度很活跃。

答案 1 :(得分:0)

好吧,这可能有点笨拙......(我希望我明白你在做什么)

1)禁用街景控制 2)使用比您拥有的标记更低的zIndex制作另一个控件。 3)使用假街景标记的位置更新街景控制。

http://jsfiddle.net/z7Lp8/

答案 2 :(得分:0)

您可以在google.maps.Marker.MAX_ZINDEX上方设置标记的zIndex,以便街景小人保持在标记下方。 MAX_ZINDEX是API将为标记分配的最大默认z-index。标记z索引仅在地图上所有标记关闭优化时才起作用。

Forked fiddle from question to illustrate: 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
    });