我正在尝试将只包含一个多点功能的geoJSON文件的各个部分加载到不同的数组中,以便在我的OpenLayers应用程序中使用,但我无法正确获取加载和解析代码。这是一个语法问题。我的geoJSON文件具有以下结构:
{
"type": "Feature",
"geometry": {
"type": "MultiPoint",
"coordinates": [
[
243.19,
31.81
],
[
243.05,
31.84
],
...
[
141.3,
38.51
]
]
},
"properties": {
"active": "12 Nov 2005 22:00 - 14 Jul 2006 22:00",
"species": "Bluefin Tuna",
"id": "100508400",
"sex": "unknown"
"time": [
1124432402,
1124434321,
...
1144737900
]
}
}
我正在尝试通过Ajax / JQuery加载geoJSON并将多点坐标解析为数组,时间坐标为数组,并提取一些属性值。
var BT100508400Coords = [],
BT100508400Time = [],
id, species;
$.getJSON('data/BT100508400.geojson').done(function (data) {
$(data).each(function () {
BT100508400Coords.push(data.geometry.coordinates);
BT100508400Time.push(data.properties.time);
id = data.properties.id;
species = data.properties.species;
}).done(function () {
makeLineString(id, species, BT100508400Coords, BT100508400Time);
}).fail(function () {
console.log("BT100508400 multipointCoords not populated");
});
});
这次尝试接近我在这里尝试的尝试:
Creating an array from GeoJSON file in OpenLayers 3
但是我已经改变了一些目标,具体来说,我的GeoJSON文件需要保持一个多点功能。我似乎无法编写单一多点功能的语法,而不是该答案中建议的功能集合。
非常感谢。
答案 0 :(得分:1)
each
没有返回具有done
方法的值。所以,基本上,只需更改下面的代码:
var BT100508400Coords = [],
BT100508400Time = [],
id, species;
$.getJSON('data/BT100508400.geojson').done(function (data) {
$(data).each(function () {
BT100508400Coords.push(data.geometry.coordinates);
BT100508400Time.push(data.properties.time);
id = data.properties.id;
species = data.properties.species;
})
makeLineString(id, species, BT100508400Coords, BT100508400Time);
});