如何从$ .getJson函数中取出变量并使用它

时间:2016-12-06 19:13:49

标签: jquery geojson

我正在尝试读取一个将向地图添加一些点的.geoJson文件。 我的数据文件看起来像这样:

{
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "start": "1970", "end": "1972" },"geometry": { "type": "Point", "coordinates": [ 11.924550479340329, 55.94619451008279 ] } },
{ "type": "Feature", "properties": { "start": "1975", "end": "1976" }, "geometry": { "type": "Point", "coordinates": [ 12.06219628503271, 55.909617190392566 ] } }, { "type": "Feature", "properties": { "start": "1979", "end": "1980" }, "geometry": { "type": "Point", "coordinates": [ 12.06219628503271, 55.909617190392566 ] } },
{ "type": "Feature", "properties": { "start": "1980", "end": "1985" }, "geometry": { "type": "Point", "coordinates": [ 12.284822339303718, 55.639778377234506 ] } }
]
};

所以这是data.geojson。

你可以看到有开始日期和结束日期,我需要用它来把它放在时间线上,否则我会使用addTo(map),所有的点都会在那里。

但我调用我的文件的代码是:

var points = null;
$.getJSON("data.geojson", function(data) {
points = L.geoJson(data);
});

尝试测试代码是否有效我做了“points.addTo(map);”这一切在我的屏幕上都是空白的,我确信我的数据是有效的,因为当我编写这样的代码时:

$.getJSON("data.geojson", function(data) {
points = L.geoJson(data).addTo(map);
});

我可以看到所有要点。但通过这样做,我不能将我的数据用于正确的目的。 希望有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我通过使用d3.json导入我的数据并将其用于我想要的目的来修复此问题,结果证明是异步问题。 通过输入d3加载选项:

d3.select(window).on("load", init)

然后使用此代码加载文件:

d3.json("data.geojson", function(data) { console.log(data);  console.log(data[0]);  points = data;

然后我的所有协调都与时间轴相关联。