【发布时间】:2012-02-15 15:29:33
【问题描述】:
我正在使用 Google Maps API 构建用户输入位置附近的商店位置地图。一切正常,但我想摆脱 Internet Explorer 中的错误。错误是“json.markers[i].latitude 为空或不是对象”。代码如下:
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 对象包含正确的信息。我还将脚本移到了页面末尾,以确保它不是那么简单(它不是)。
有什么想法吗?
【问题讨论】:
-
使用jsonlint.com 验证json - 我怀疑它的末尾有一个额外的逗号..... IE 讨厌额外的逗号!
-
JSON 对象中没有额外的数组条目。谢谢你的想法。
-
可以包含 json 吗?即在您的问题中发布或创建jsfiddle.net
-
包含 JSON。希望对您有所帮助。
-
经度和纬度值应该是数字...使用
parseFloat()进行转换 - 什么是mrkrs即你传递给这个函数的是什么?
标签: javascript json internet-explorer google-maps google-maps-api-3