使用Django返回GeoJson

使用Django返回GeoJson,django,json,maps,geojson,Django,Json,Maps,Geojson,我试图返回一组坐标,以便在地图上绘制点/矩形。目前我正在使用Polymaps,但我正在考虑迁移到openlayers,对于像我这样的javascript新手来说,openlayers有更清晰的示例 我想发送一个坐标列表,每个坐标加上一个特定的值。我还希望在同一个json中发送多个坐标列表,每个列表都有另一个特定的值(时间),这样每次我都可以在地图上表示不同的点/多边形 我已经能够用json返回3个单独的列表,一个用于纬度,一个用于经度,另一个用于每个点的值。但是openlayers和Polyma

我试图返回一组坐标,以便在地图上绘制点/矩形。目前我正在使用Polymaps,但我正在考虑迁移到openlayers,对于像我这样的javascript新手来说,openlayers有更清晰的示例

我想发送一个坐标列表,每个坐标加上一个特定的值。我还希望在同一个json中发送多个坐标列表,每个列表都有另一个特定的值(时间),这样每次我都可以在地图上表示不同的点/多边形

我已经能够用json返回3个单独的列表,一个用于纬度,一个用于经度,另一个用于每个点的值。但是openlayers和Polymaps在其示例中都使用GeoJson,这看起来是更明智的选择

问题是,我不知道如何使用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>

var po=org.polymaps;
var map=po.map()
.container(document.getElementById(“map”).appendChild(po.svg(“svg”))
.add(po.interact())
.center({lat:46,lon:10})
.缩放(4);
var svg=document.querySelector(“svg.map”);
setAttribute(“宽度”、“100%”);
setAttribute(“高度”、“100%”);
map.resize();
map.add(po.image()
.url(po.url(“http://{S}tile.cloudmake.com”)
+“/1a1b06b230af4efdbb989ea99e9841af”//http://cloudmade.com/register
+“/20760/256/{Z}/{X}/{Y}.png”)
.hosts([“a.”、“b.”、“c.”、“]”);
//从django响应获取值
var latitude=“{latitudeList}}”;
var longitude=“{{longitudeList}}”;
var vpl=“{vplList}}”;
//画圈
//还不知道如何使用多边形贴图。举例http://polymaps.org/ex/cluster.html

首先看一看。这应该清楚地说明如何设计数据结构

但是你的方法有几个地方是错误的,基本上是编码错误。查看您的
呈现到\u响应
方法。传递变量
jsonObject
,它是一个dict。在模板中,您尝试分配变量
latitudeList
,它实际上是
jsonObject

下面是我如何创建geojson对象的一个示例,以显示带有传单的一些点几何图形(一个值得您查看的库)

在模板中,您可以简单地将对象分配给js变量,如下所示

var geojsonFeature = {{ geo_json|safe }}

你所没有的有用吗?或者你是在特别询问如何以
GeoJson
格式获取输出?@themanatuf如果你看一下这个例子,他们会直接从json获取所有数据。因此,由于我在这里以一个普通的json接收它,我不知道该如何做。所以我不知道这是我的错,还是Polymaps是专门为geoJson设计的。我不知道如何在django中生成geoJson。因此,如果我收到帮助,我可以接受这两种解决方案中的任何一种。什么是Vsoil?我还没有找到任何关于任何python库的信息,它是我的一个模型的名称。它实际上是一个基本的数据库查询<代码>ModelName.objects.xxx
var geojsonFeature = {{ geo_json|safe }}