2012-08-07 58 views
21

當我用不同的圖標類型添加更多的標記到谷歌地圖,如:google.maps.Marker zIndex的沒有兩個圖標工種 - 符號和字符串

... 
var marker = new google.maps.Marker({ 
      position: markerLatLng, 
      map: map, 
      icon: "http://www.test.com/marker.png", 
      zIndex: 10 
     }); 
... 

... 
var resultIcon = { 
      path: google.maps.SymbolPath.CIRCLE, 
      fillColor: "black", 
      strokeColor: "black", 
      strokeWeight: 1, 
     }; 

var marker = new google.maps.Marker({ 
      position: markerLatLng, 
      map: map, 
      icon: resultIcon, 
      zIndex: 5 
     }); 
... 

比zIndex不起作用,符號標記出現在頂部。

我錯了我的代碼或我如何使zIndex工作?

+0

工作正常應用程序時,你不指定自定義圖標? – jeff 2012-08-19 23:37:47

回答

46

你有兩個指定zIndex並添加

optimized: false 

標記的構造函數,例如。

var marker = new google.maps.Marker({ 
    position: markerLatLng, 
    map: map, 
    icon: resultIcon, 
    optimized: false, 
    zIndex: 5 
}) 

這似乎是基於新的基於畫布的標記渲染的問題。

編輯:

這確實解決了問題。 但要注意的一點是,每個標記必須具有「優化:false」屬性。只要一個標記沒有它,它就無法工作。

從LeJared的小提琴中刪除任何「優化:false」屬性,您將遇到該錯誤。

http://jsfiddle.net/BNWYq/1/

+0

是的,你是對的。感謝您糾正我的小提琴。 – LeJared 2012-08-22 21:35:08

+0

這個解決方案對我很感激! :-) – kuceram 2012-09-04 15:22:01

+0

你剛剛挽救了我數不清的時間,把我的頭髮拉出來。 – 2013-02-07 21:31:13

0

我做了一個小fiddl: http://jsfiddle.net/gSRmV/

看起來像一個bug,即必須由谷歌來固定。

添加 optimized: false不會改變任何內容。

編輯:仍然看起來像bug,但tborychowski和Codetoffel的兩個解決方案似乎工作。

8

設置圓-99的zIndex的似乎幫助:http://jsfiddle.net/rq4vs/2/

+0

嘿,這也是一個不錯的解決方案。感謝您糾正錯誤。 – LeJared 2012-08-22 21:52:15

+0

這適用於我。 – 2013-01-24 17:43:37

+1

請注意:這個解決方案的問題在於,符號「偷走」事件,如鼠標懸停和單擊圖像,即使它是在圖像下方可視化繪製的。查看這個小提琴,看看如何顯示來自圓圈的工具提示而不是提示工具提示,即使圓圈放在引腳下:http://jsfiddle.net/AEePr/ 我希望谷歌能解決這個問題方式,因爲設置優化= false在所有情況下都不理想。 – 2013-05-08 12:05:29