Я пытаюсь вернуть набор координат, чтобы нарисовать точки/прямоугольники над картой. В настоящее время я использую Polymaps, но я думаю о переходе к openlayers, у которого есть примеры, более понятные для новичка javascript, подобного мне.Возвращение GeoJson с Django
Я хочу отправить список координат плюс определенное значение для каждого из них. И я также ищу отправку многих списков координат в том же json, каждый с другим определенным значением (время), поэтому я могу представлять разные точки/многоугольники по карте за каждый раз.
Я смог вернуть 3 отдельных списка с помощью json, один для широты, один для долготы и еще один со значением для каждой точки. Но оба openlayers и Polymaps используют GeoJson на своих примерах, что выглядит более разумным выбором.
Проблема в том, что я не знаю, как сгенерировать ответ geoJson с Django. Я нашел django-geojson, но нет ясного примера, чтобы делать то, что я хочу, и, конечно, не возвращать много наборов для разных времен.
Любая помощь? Я также могу принять, как это сделать, только с Json.
Что я сейчас:
#views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
import myproject.databasework as databaseWork
import json
def values(request):
gpsTime = 1043366400
pls = databaseWork.getValues(gpsTime)
latitudes = []
longitudes = []
values = []
for row in pls:
pointId = row[0]
value = row[2]
lat, lon = databaseWork.getCoords(pointId)
latitudes.append(lat)
longitudes.append(lon)
values.append(value)
jsonObject = {'latitudeList': json.dumps(latitudes),
'longitudeList': json.dumps(longitudes),
'valuesList': json.dumps(values)}
return render_to_response('mytemplate.html', jsonObject, context_instance=RequestContext(request))
И это часть HTML:
<script type="text/javascript">
var po = org.polymaps;
var map = po.map()
.container(document.getElementById("map").appendChild(po.svg("svg")))
.add(po.interact())
.center({lat: 46, lon: 10})
.zoom(4);
var svg = document.querySelector("svg.map");
svg.setAttribute("width", "100%");
svg.setAttribute("height", "100%");
map.resize();
map.add(po.image()
.url(po.url("http://{S}tile.cloudmade.com"
+ "/1a1b06b230af4efdbb989ea99e9841af" // http://cloudmade.com/register
+ "/20760/256/{Z}/{X}/{Y}.png")
.hosts(["a.", "b.", "c.", ""])));
// Get values from django response
var latitude = "{{ latitudeList }}";
var longitude = "{{ longitudeList }}";
var vpl = "{{ vplList }}";
// Draw circles
// Don't know how to do it with Polymaps yet. Example at http://polymaps.org/ex/cluster.html
</script>
ли то, что вы не работаете или вы конкретно с вопросом, как получить выход в 'формате GeoJson'? – themanatuf
@themanatuf Если вы посмотрите пример на http://polymaps.org/ex/cluster.html, они напрямую берут все данные из json. Итак, поскольку я получаю его в обычном json здесь, я не знаю, как сделать трюк. Поэтому я не знаю, является ли это моя ошибка здесь, или что Polymaps специально разработан для geoJson. И я не знаю, как создать geoJson в django. Поэтому я могу принять любое из этих двух решений, если получаю помощь –