3

我正在使用 Django、Geodjango、OpenLayers 和 PostGIS 创建一个网络地图应用程序。我想将 OpenLayers 底图放大到从组合框中选择的城市的位置,我想我可以通过将纬度/经度坐标和缩放级别传递给 OpenLayers 来做到这一点。

我有一个视图函数,它运行一个带有所选城市过滤器的 django 查询,然后计算返回的 QuerySet 的质心,如下所示。

centroid = LGA.objects.get(name=lga).geom.centroid

我目前设置地图中心的方式是静态地使用以下代码:

var center = new OpenLayers.LonLat(133.0, -27.0).transform(
    new OpenLayers.Projection("EPSG:4326"),
    map.getProjectionObject()
    );

这些坐标是针对澳大利亚中心的,但我想使用带有纬度和经度变量的 Django 模板为所选城市动态设置地图中心。我不确定如何从我在视图函数中计算的质心获取纬度和经度,或者,如果有另一种方法可以通过传递几何而不是坐标来在 OpenLayers 中设置地图中心。

提前感谢您的帮助。

4

2 回答 2

7

啊,我想通了,这很简单。您可以通过在 django 查询的末尾添加“.x”或“.y”来访问 Lat 和 Long 值,如下所示:

centroid = LGA.objects.get(name=lga).geom.centroid.x
于 2013-09-25T13:57:37.680 回答
0

你的几何点格式是什么?你能给我们举个例子吗?据我了解,您的几何点不在投影EPSG:4236(用于纬度和经度)中,而是在其他格式(投影)中,对吗?正常的方法是使用Point.transform方法在 Openlayers 中转换投影,但在 GeoDjango 中不计算。

于 2013-09-24T22:26:50.007 回答