Django 1.8 Geojson

时间:2015-04-25 10:56:56

标签: javascript json django geojson

将模型序列化为geojson(https://docs.djangoproject.com/en/1.8/ref/contrib/gis/serializers/)时,如何通过主键传递?

{"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "EPSG:4326"}}, "features": [{"type": "Feature", "properties": 

根据geojson标准,你会期望使用模型pk有一个功能ID,但是没有。它也没有在对象属性中传递。

我总是可以通过添加另一个字段来破解它,这是PK的副本,但必须有一种传递它的方法。

我使用geojson的原因是因为我想将坐标传递给Google maps api,如果你将PointField序列化为普通的json,你会得到类似的结果:

"location": "SRID=4326;POINT (-0.1468187000000000 51.5052463000000031)"

地图api会将这些坐标视为(51.5052463000000031,-0.1468187000000000)。我可以用JS将那些坐标转换成那种格式吗?

由于

2 个答案:

答案 0 :(得分:0)

我一直在研究类似的事情Django Rest Framework - GISDjango Rest Framework对此有用。

答案 1 :(得分:0)

最后,我用JS来解析普通的json。与geojson混淆是更值得的麻烦。

你将有一个像这样的字符串是你的json响应:

"location": "SRID=4326;POINT (-0.1468187000000000 51.5052463000000031)"

所以这就是我所做的:

#grab your POINT field json string and save it somehow
var coords = "location": "SRID=4326;POINT (-0.1468187000000000 51.5052463000000031)"
# you'll need this regex
var regex = /[+-]?\d+(\.\d+)?/g;
# this gets rid of everything before the semi colon ';'
coords = coords.split(";").pop();
# use the regex to return an array of floats
coords = coords.match(regex).map(function(v) { return parseFloat(v); });
# set those floats to your lat long
var latitude = coords[1];
var longitude = coords[0];
# PROFIT!
console.log(latitude, longitude);