我有一个页面可以为指定位置呈现简单的谷歌地图。当我在localhost上本地运行它时,这个地图完全呈现没有任何问题,但是,当我将此代码部署到我们的实时网络服务器时(使用我们的适当域的LIVE google API密钥),它无法呈现,并且在放置一个系列时在页面上的javascript中的警报,似乎没有调用'Initialize'方法(应在body onLoad中调用)。
当我查看在实时服务器上呈现的HTML源时,它完全按照站点的本地版本显示(包括在body onLoad事件中调用initialize()),尽管使用不同的map API密钥。
我输出了主机(alert(window.location.host);)以确保我通过google maps api站点生成的密钥与实时服务器完全对应。
有没有人知道为什么它会在本地工作但在部署到实时服务器时却没有?实时站点托管在2个负载均衡的Web服务器上。
这是呈现的javascript:
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=ABQIAAAA-BU8POZj19wRlTaKIXVM9xTz76xxk4yAELG9u79oXrhnLTB5NRRvAZ-bkKn1x8J68nfRTVOIWNPJEA" type="text/javascript"></script>
<script type="text/javascript">
var map;
var geocoder;
alert(window.location.host);
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("businessMap"));
map.setUIToDefault();
geocoder = new GClientGeocoder();
showAddress('St Margarets Street SW1P 3 London');
}
}
function showAddress(address) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
// Address could not be located.
jQuery('#googleMap').hide();
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
var html = 'Address info for the marker';
marker.openInfoWindow(html);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
}
}
);
}
</script>
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
我找到了问题所在。这是与Facebook Connect相关的一些冲突的javascript,它在window.onload上调用了FB Connect相关页面,因此没有在body onload事件中调用initialize函数。
我之前应该注意到这个冲突的javascript!