所以,我有一个看起来像这样的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 & 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.length
和results.FeatureCollection.features.length
,唯一“有效”的是results.length
,它给出了整个数组。其他一切都给出了一个未定义的错误。
感谢您的任何建议或帮助。
答案 0 :(得分:1)
正如Dalorzo所提到的,如果你有结果var,results.features.length会为我提供这些数据。
如果你有权访问underscore.js,那么有一个方法_.size将为你提供对象的数量,但似乎你不需要它来抓住它。
答案 1 :(得分:1)
这是一个使用results.features.length
的小提琴。
答案 2 :(得分:0)
感谢所有帮助过的人。我的问题是我将JSON作为'text'
获取loadAttractions(this.responseText);
当我应该解析为JSON
时var results = JSON.parse(this.responseText);
这使它成功了。再次感谢所有人。