循环访问谷歌地图的JSON数据

时间:2015-02-25 21:15:52

标签: javascript json

我试图使用以下方法访问此JSON(见下文)文件中的数据,例如类型,属性等:

data = new google.maps.Data();
var json = data.loadGeoJson('insert-url-here');

for (var i=0; i < json.length; i++) {
      var obj = json[i];
      console.log(obj.coordinates);
}

我在for循环Cannot read property 'length' of undefined的第一行收到错误。我想通过读取coordinates值来放大对象。

google.maps.addListener(data, 'click', function () {
  obj.setZoom(10);
}

我做错了什么?

JSON示例:

"features": [{ "type": "Feature", "properties": { "id": 18, "geometry": { "type": "Point", "coordinates": [ -34.397, 150.644 ] } 

2 个答案:

答案 0 :(得分:1)

要实际检索coordinates属性,您需要执行此操作:

&#13;
&#13;
var json = {"features": [{ "type": "Feature", "properties": { "id": 18, "geometry": { "type": "Point", "coordinates": [ -34.397, 150.644 ]}}}]} 
                          
document.write(json.features[0].properties.geometry.coordinates);
&#13;
&#13;
&#13;

这个JSON构建如何

object 
    - property -> features (Array, length: 1)
      [ Object
         - property -> properties (Object)
            - property -> geometry (Object)
               - property -> coordinates (Array, length: 2)
      ]

答案 1 :(得分:1)

var json = data.loadGeoJson('insert-url-here');

这里的json变量作为未定义的对象返回,导致错误。还最好使用另一个变量名称

无论何时返回json,都可以使用eval()之类的东西来返回javascript对象。这样你就可以使用json.features [0] .properties.coordinates

访问坐标

这里的功能是一个数组,所以你需要通过它们