首先,當我在你的鏈接查看該網站時,頁面會拋出:未捕獲的ReferenceError:markerOffset不以線73,這是(格式化)定義:
可以很容易地看到
//var markerOffset = map.fromLatLngToDivPixel(markers.getPosition());
所以,你必須取消註釋上線72和重構我的代碼:這個代碼將永遠沒有markerOffset
,因爲上一行(線72)的代碼被註釋掉未被定義的工作t通過v3 api工作:
- 內部調用:
markers.getPosition()
在v3中仍然有效;迄今爲止這麼好
- 外部調用:
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
});
}
顯然,這個代碼是未經測試,所以你可能有一些調試做的,但我希望這代碼將使你朝着正確的方向前進。
感謝您的迴應!我不認爲它的CSS,我認爲這與添加div(覆蓋)到地圖「窗格」有關。我只是不知道。 – Spiffster
這將獲得標記的位置,但對疊加無效。 – Spiffster
對不起,我在錯誤的問題上寫了關於CSS的答案!您應該在OverlayView中顯示疊加層 - 然後它將正確地與地圖相關聯。 –