我在一个旧的内容管理系统中运行了一个谷歌地图,该系统运行JScript前端,调用PHP API来满足请求。一切都很好,尽管在V3之后,谷歌地图API现在正在生产TypeError window.Image is not a function
。
以下跟踪来自谷歌Chrome浏览器
Uncaught TypeError: window.Image is not a function
k3 @ stats.js:2
Uncaught TypeError: window.Image is not a function
vB @ util.js:9
这是加载地图的JScript
setMap: function(){
this._map = new google.maps.Map(this._panel.mapcanvas, {
zoom: 16,
center: this._latlng
});
},
地图加载需要很长时间,不会缩放,不显示任何控件。Map在缩放级别16进行初始化,并以所提供的_latlng
为中心。
如果我向地图选项添加任何其他控件,它们不会显示,也不会对地图进行任何更改。
window.Image
问题也出现在初始负载上。
rg @ js?key=YOURAPIKEY&callback=initMap:84
只是猜测:在页面的某个地方,将创建一个名为Image
的全局变量(它不是函数)。
此变量覆盖内置函数Image()
(maps-API尝试调用此函数)
演示:
Image='something';
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644),
zoom: 8
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
html ,body,#map-canvas { height: 100%; margin: 0; padding: 0 ;}
<div id="map-canvas"></div><script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?v=3">
</script>
解决方案:删除此变量的创建(例如,使用另一个名称),您永远不应该使用全局变量的名称,这些名称等于窗口对象的内置属性的名称