我正在使用Django,Geodjango,OpenLayers和PostGIS创建一个Web地图应用程序。我想将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()
);
这些坐标是针对澳大利亚的中心,但我想使用带有Lat和Long变量的Django模板为所选城市动态设置地图中心。我不确定如何从我在视图函数中计算的质心中获取Lat和Long,或者,如果有其他方法通过传递几何而不是坐标来设置OpenLayers中的地图中心。
提前感谢您的帮助。
罗
答案 0 :(得分:4)
centroid = LGA.objects.get(name=lga).geom.centroid.x
答案 1 :(得分:0)
您的几何点格式是什么?你能举个例子吗? 根据我的理解,您的几何点不在投影 EPSG:4236 (用于纬度和经度),而是其他格式(投影)对吗?通常的方法是使用 Point.transform 方法在Openlayers中转换投影,但不能在GeoDjango中计算。