如何迭代GeoJson Feed for Google Map

时间:2014-02-04 23:32:49

标签: javascript geojson

所以,我有一个看起来像这样的GeoJson Feed

 {
  "type" : "FeatureCollection",
  "features" : [
    {
      "type" : "Feature",
      "geometry" : {
        "type" : "Point",
        "coordinates" : [
          -84.50926612,
          39.1423275
        ]
      },
      "properties" : {
        "name" : "<a href=\"/Things-To-Do/Attractions/cincinnati-zoo-botanical-garden\">Cincinnati Zoo &amp; Botanical Garden</a>",
        "description" : ""
      }
    },
    {
      "type" : "Feature",
      "geometry" : {
        "type" : "Point",
        "coordinates" : [
          -84.495935481675,
          39.095853705988
        ]
      },
      "properties" : {
        "name" : "<a href=\"/Things-To-Do/Attractions/bb-riverboats-thanksgiving-day-cruise\">BB Riverboats Thanksgiving Day Cruise</a>",
        "description" : ""
      }
    }
  ]
}

我正在使用此功能

加载它
var attbut = document.getElementById('loadatt');
attbut.addEventListener('click', function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'path-to-GeoJson', true);
xhr.onload = function() {
loadAttractions(this.responseText);
};
xhr.send();
});

它装得很好。但是我似乎无法获得'length'属性来迭代。

function loadAttractions(results) {
log(results.FeatureCollection.length);
for (var i = 0; i < results.FeatureCollection.length; i++) {
var coords = results.features[i].geometry.coordinates;
var latLng = new google.maps.LatLng(coords[1],coords[0]);
     var marker = new google.maps.Marker({
     position: latLng,
     map: map
     });
}
}     

我尝试了results.features.lengthresults.FeatureCollection.features.length,唯一“有效”的是results.length,它给出了整个数组。其他一切都给出了一个未定义的错误。

感谢您的任何建议或帮助。

3 个答案:

答案 0 :(得分:1)

正如Dalorzo所提到的,如果你有结果var,results.features.length会为我提供这些数据。

如果你有权访问underscore.js,那么有一个方法_.size将为你提供对象的数量,但似乎你不需要它来抓住它。

答案 1 :(得分:1)

这是一个使用results.features.length的小提琴。

http://jsfiddle.net/dXQeP/

答案 2 :(得分:0)

感谢所有帮助过的人。我的问题是我将JSON作为'text'

获取

loadAttractions(this.responseText);

当我应该解析为JSON

var results = JSON.parse(this.responseText);

这使它成功了。再次感谢所有人。