2012-05-03 26 views
1

我一直在這一個工作了一段時間,我只是無法弄清楚。我有谷歌地圖代碼,我試圖從V3帶入V3。我有一切工作,但覆蓋,取代正常的infowindow。此行:谷歌地圖V2到V3標記單擊覆蓋不工作(JQuery)

$("#infoCallout").appendTo(map.getPane(G_MAP_FLOAT_SHADOW_PANE)); 

不再適用於V3。 $(「#infoCallout」)是隱藏的div。眼下影像重疊顯示了左上角...

看看我到目前爲止在這裏:http://empulseforum.com/brammoMapV3.php

而在V2的工作只是在這裏罰款:http://brammoforum.com/brammo-owners-map.php

我覺得我失去了一些東西簡單。

在此先感謝!

回答

0

使用OverlayViewfromLatLngToContainerPixel方法。

+0

感謝您的迴應!我不認爲它的CSS,我認爲這與添加div(覆蓋)到地圖「窗格」有關。我只是不知道。 – Spiffster

+0

這將獲得標記的位置,但對疊加無效。 – Spiffster

+0

對不起,我在錯誤的問題上寫了關於CSS的答案!您應該在OverlayView中顯示疊加層 - 然後它將正確地與地圖相關聯。 –

1

首先,當我在你的鏈接查看該網站時,頁面會拋出:未捕獲的ReferenceError:markerOffset不以線73,這是(格式化)定義

​​

可以很容易地看到

//var markerOffset = map.fromLatLngToDivPixel(markers.getPosition()); 

所以,你必須取消註釋上線72和重構我的代碼:這個代碼將永遠沒有markerOffset,因爲上一行(線72)的代碼被註釋掉未被定義的工作t通過v3 api工作:

  1. 內部調用:markers.getPosition()在v3中仍然有效;迄今爲止這麼好
  2. 外部調用:map.fromLatLngToDivPixel()不再存在於v3中;這個和相關的調用已經被移入類:google.maps.MapCanvasProjection。通過調用:OverlayView.getProjection()可以進行投影。

把它在一起,我建議你嘗試在displayPoint功能改變代碼:

function displayPoint(markers, index) { 
    map.panTo(markers.getPosition()); 
    $("#infoCallout").hide(); 
    updateMemberInfo(pic[index], dN[index], bID[index], cS[index]); 

    // Next 2 lines are new and replace the old line of code: 
    var prjctn = overlay.getProjection();   
    var markerOffset = prjctn.fromLatLngToDivPixel(markers.getPosition()); 

    $("#infoCallout").fadeIn('slow').css({ 
     top: markerOffset.y + -107, 
     left: markerOffset.x -40 
    }); 
} 

顯然,這個代碼是未經測試,所以你可能有一些調試做的,但我希望這代碼將使你朝着正確的方向前進。