Google地图和Internet Explorer Javascript/JSON问题
我正在使用GoogleMapsAPI在用户输入的位置附近构建商店位置的地图。一切正常,但我在Internet Explorer中遇到了一个错误,我想把它处理掉。错误是“json.markers[i].latitude为null或不是对象”。代码如下:Google地图和Internet Explorer Javascript/JSON问题,javascript,json,internet-explorer,google-maps,google-maps-api-3,Javascript,Json,Internet Explorer,Google Maps,Google Maps Api 3,我正在使用GoogleMapsAPI在用户输入的位置附近构建商店位置的地图。一切正常,但我在Internet Explorer中遇到了一个错误,我想把它处理掉。错误是“json.markers[i].latitude为null或不是对象”。代码如下: function buildGoogMapView(mrkrs,json) { var marker=centerLatitude=centerLongitude=startZoom=point=map=""; mrkrs.each(json.g
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对象,根据请求(出于保密目的,我更改了一些值):
我在任何其他浏览器中都没有遇到这个错误,我知道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);
}
for(var i=0;i
如果这消除了错误,请继续阅读解释
这是两个复杂的问题:
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);
}
for(var i=0;i
如果这消除了错误,请继续阅读解释
这是两个复杂的问题:
关于“for..in”循环的更多详细信息:使用验证json-我怀疑它的末尾有一个额外的逗号。。。。。我讨厌多加逗号!JSON对象中没有额外的数组项。谢谢你的想法。你能包括json吗?ie将其发布在您的问题中或创建包含的JSON。希望有帮助。经度和纬度值应该是数字。。。使用
parseFloat()
转换-什么是mrkrs
即传递给此函数的是什么?使用验证json-我怀疑它的末尾有一个额外的逗号。。。。。我讨厌多加逗号!JSON对象中没有额外的数组项。谢谢你的想法。你能包括json吗?ie将其发布在您的问题中或创建包含的JSON。希望有帮助。经度和纬度值应该是数字。。。使用parseFloat()
转换-什么是mrkrs
即您传递给此函数的是什么?这不完全正确,但让我找到了正确的解决方案。显然,有一个额外的数组对象,即使在控制台打印输出中也没有显示。我将循环运行到.length-1,结果成功了。谢谢这不是很好,但让我找到了正确的解决方案。显然,有一个额外的数组对象,即使在控制台打印输出中也没有显示。我将循环运行到.length-1,结果成功了。谢谢