谷歌地图和Internet Explorer Javascript/JONIssue
Google Maps and Internet Explorer Javascript/JSON Issue
我正在使用Google Maps API在用户输入的位置附近构建商店位置地图。一切都正常,但我在Internet Explorer中遇到了一个错误,我想消除它。错误是"json.marks[i].litude为null或不是对象"。这是代码:
function buildGoogMapView(mrkrs,json)
{
var marker=centerLatitude=centerLongitude=startZoom=point=map="";
mrkrs.each(json.gdrcenter, function(i) {
centerLatitude = json.gdrcenter[i].latitude;
centerLongitude = json.gdrcenter[i].longitude;
});
mrkrs.each(json.gdrzoom, function(i) {
startZoom = json.gdrzoom[i].setting;
});
startZoom = Number(startZoom);
map = new GMap2(document.getElementById("mapGOOG_PlaceHolder"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(centerLatitude, centerLongitude),startZoom);
mrkrs.each(json.markers, function(i) {
point = new GLatLng(json.markers[i].latitude,json.markers[i].longitude);
marker = createMarker(point,json.markers[i].description);
map.addOverlay(marker);
});}
根据请求,这里是JSON对象(出于保密目的,我更改了一些值):
{"gdrzoom":[
{"setting":"7"}],
"gdrcenter":[
{"latitude":"35.5",
"longitude":"-79.6"}],
"markers":[
{"latitude":"35.0",
"longitude":"-78.9",
"name":"Store",
"description":"DESCVALUE"},
{"latitude":"36.0",
"longitude":"-79.8",
"name":"Store",
"description":"DESCVALUE"},
{"latitude":"35.5",
"longitude":"-80.8",
"name":"Store",
"description":"DESCVALUE"}]}
我在任何其他浏览器中都没有收到这个错误,而且我知道json对象包含正确的信息。我还把脚本移到了页面的末尾,以确保它不是那么简单(事实并非如此)。
有什么想法吗?
尝试更改此项:
mrkrs.each(json.markers, function(i) {
point = new GLatLng(json.markers[i].latitude,json.markers[i].longitude);
marker = createMarker(point,json.markers[i].description);
map.addOverlay(marker);
});}
对此:
for (var i = 0; i < json.markers.length; i++) {
point = new GLatLng(json.markers[i].latitude,json.markers[i].longitude);
marker = createMarker(point,json.markers[i].description);
map.addOverlay(marker);
}
如果这消除了错误,请继续阅读解释。
这是两个复杂的问题:
- 谷歌地图添加了一个"Array.prototype.map()"函数
- jQuery的.ech()使用"for.in"循环方法(至少有时,我认为这取决于它是否在对象上循环)
大多数浏览器在循环时都会忽略"Array.prototype.map()"函数,即使使用"for.in"方法,但Internet Explorer会尝试对其进行循环。这会导致循环的最后一次迭代实际上在"map"函数上,该函数没有"latitude"属性,因此IE会抛出错误:"json.markers[i].alatitude为null或不是对象"。
关于"for.in"循环的更多详细信息:为什么使用"for";对于在";数组迭代是个坏主意吗?
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 谷歌地图和Internet Explorer Javascript/JONIssue