Django 1.8 Geojson
Django 1.8 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 地图 api,并且如果您正常序列化 PointField json你最终会得到类似的东西:
"location": "SRID=4326;POINT (-0.1468187000000000 51.5052463000000031)"
地图 api 期望这些坐标为 (51.5052463000000031, -0.1468187000000000)。也许我可以用 JS 将这些坐标转换成那种格式?
谢谢
我一直在研究类似的东西Django Rest Framework - GIS
Django Rest Framework 对此很有用。
最后还是用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);
模型序列化为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 地图 api,并且如果您正常序列化 PointField json你最终会得到类似的东西:
"location": "SRID=4326;POINT (-0.1468187000000000 51.5052463000000031)"
地图 api 期望这些坐标为 (51.5052463000000031, -0.1468187000000000)。也许我可以用 JS 将这些坐标转换成那种格式?
谢谢
我一直在研究类似的东西Django Rest Framework - GIS Django Rest Framework 对此很有用。
最后还是用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);