首先,当我在您的链接上查看新站点时,页面会抛出:Uncaught ReferenceError: markerOffset is not defined at line 73,即(重新格式化):
$("#infoCallout").fadeIn('slow').css({
top: markerOffset.y + -107,
left: markerOffset.x - 40 });
很容易看出,如果没有 ,这段代码将永远无法工作markerOffset
,因为上一行(第 72 行)的代码被注释掉了,所以没有定义它:
//var markerOffset = map.fromLatLngToDivPixel(markers.getPosition());
因此,您必须取消注释第 72 行的代码并重构它以通过 v3 api 工作:
- 内部调用:
markers.getPosition()
在 v3 中仍然有效;到目前为止,一切都很好
- 外部调用:
map.fromLatLngToDivPixel()
在 v3 中不再存在;this 和相关的调用已移入类: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
});
}
显然,这段代码未经测试,因此您可能需要进行一些调试,但我希望这段代码能让您朝着正确的方向前进。