是什么导致了IE8中的谷歌地图错误
What is causing a Google Maps error in IE8?
我们正在使用谷歌地图,并发现了一个似乎只发生在IE8(可能更低)中的问题。该功能在FF,Chrome,IE9中正常工作。
发生错误的代码是:
google.load("maps", "3.x", { other_params: "sensor=false" });
var mapdiv = null;
$(function () {
mapdiv = document.getElementById("map");
map = new google.maps.Map( mapdiv, {
zoom: 1,
center: new google.maps.LatLng(6, 35),
disableDefaultUI: true,
mapTypeId: google.maps.MapTypeId.TERRAIN
});
var latlngbounds = new google.maps.LatLngBounds( );
特别是在这一行:
map = new google.maps.Map( mapdiv, {
zoom: 1,
center: new google.maps.LatLng(6, 35),
disableDefaultUI: true,
mapTypeId: google.maps.MapTypeId.TERRAIN
});
错误是:
对象不支持此属性或方法
我对 IE 开发工具进行了一些尝试,如果我用类似 var x =
的东西替换map =
没有任何错误,所以这让我相信map
对象是缺少某些属性/方法的罪魁祸首。虽然我真的不知道map
对象来自哪里,但我认为它是从google.load
调用加载的。
有谁知道这里发生了什么?
当行:
map = new google.maps.Map(mapdiv, { zoom: 1, center: new google.maps.LatLng(6, 35), disableDefaultUI: true, mapTypeId: google.maps.MapTypeId.TERRAIN });
执行 JavaScript 解释器将开始遍历作用域链,寻找声明map
的位置。由于它不是在本地声明的,即 var map = ...
,它不会在您的本地范围内找到它,并且最终会添加到全局范围内。
在您的情况下,map
已在全局范围内定义为window.map
,因为它是页面上div
的 ID。在所有浏览器中,您都看不到错误消息,window.map
设置为新的google.maps.Map
对象。 出于某种原因,无论好坏,IE8 都不会允许您创建名称与引用 DOM 元素的现有全局变量冲突的全局变量。
您可以通过几种不同的方式解决此问题:
- 创建本地
var map
- 将div 的 id 从
map
更改为其他内容 如果必须在全局范围内存在
map
请使用window.map =...
(3b) 将变量名称更改为与
window.map
不冲突的名称,例如myMap = new google.maps.Map(...
相关文章:
- 谷歌地图laravel上圆圈的错误位置
- 我该如何解决“;未捕获引用错误:谷歌没有定义"?(谷歌地图API)
- 谷歌地图infowindow错误f=未定义的infowindow.js
- 谷歌地图web组件NoApiKeys错误
- 信息窗口谷歌地图点击事件给出错误
- 嵌入谷歌地图后的CSS错误
- 未捕获的类型错误:无法读取属性'fitBounds'谷歌地图(markrWithlabel js)中未定
- 谷歌地图javascript多个方法错误
- 谷歌地图如何修复OVER_QUERY_LIMIT错误
- IE8谷歌地图错误
- 是什么导致了IE8中的谷歌地图错误
- 谷歌地图错误,拖拽事件也会在IE中触发点击事件
- 生成谷歌地图错误
- 谷歌地图错误:未捕获的InvalidValueError:setIcon:不是字符串;并且没有url属性;并且没有路径属
- 谷歌地图错误“'addDomListener'“未定义”;
- 谷歌地图错误“;未捕获的类型错误:无法读取属性'x'“未定义”;
- 谷歌地图错误在SAPUI5
- 谷歌地图错误-无效的纬度/经度
- 当我点击谷歌地图[$parse:语法]中的箭头图标时,谷歌地图错误
- 谷歌地图错误:哎呀!出了什么问题.这个页面没有正确加载谷歌地图