将模型序列化为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将那些坐标转换成那种格式吗?
由于
答案 0 :(得分:0)
我一直在研究类似的事情Django Rest Framework - GIS 和Django 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);