从具有点列的 Geodjango 查询集中查找最外层的坐标
Find outermost cordinates from Geodjango queryset which has point column
我对地理数据和 geodjango 本身很陌生。假设我有模型:
class Employee(models.Model):
name = models.CharField(max_length=30)
location = PointField()
我想使用 leafletjs
显示地图,像这样 http://leafletjs.com/examples/quick-start-example.html 员工姓名和位置标记。
现在说员工遍布德国各地,但其中一些人远程工作并且位于某个未知位置。如果他们只位于德国,我可以显示整个德国的地图并根据坐标添加标记。问题是如果一名员工在俄罗斯工作,我需要为所有其他员工显示俄罗斯等等 countries/employees。
回到代码示例:
如果我的 Employee
模型查询集 returns 三名员工分别位于德国和俄罗斯这两个国家,我想显示带有标记的德国到俄罗斯的地图,而不是整个世界的地图。我如何从查询集中计算这个最外层的坐标?或者还有什么其他方法可以解决上述问题?
Leaflet 应该能够根据您希望在地图上显示的点计算地图的边界框。这也可以很容易地完成 geodjango
。 extent 就是您要找的。
bounds = Employee.objects.filter(some filter).extent()
这在新版本中已弃用,而是使用:
from django.contrib.gis.db.models import Extent
bounds = Employee.objects.filter(some filter).aggregate(Extent('point'))['point__extent']
在 LefletJS 中:
var mymap = L.map('mapid').fitBounds(51.505, 51.507], [51.56, 50.98]], {padding: [10, 10]});
我对地理数据和 geodjango 本身很陌生。假设我有模型:
class Employee(models.Model):
name = models.CharField(max_length=30)
location = PointField()
我想使用 leafletjs
显示地图,像这样 http://leafletjs.com/examples/quick-start-example.html 员工姓名和位置标记。
现在说员工遍布德国各地,但其中一些人远程工作并且位于某个未知位置。如果他们只位于德国,我可以显示整个德国的地图并根据坐标添加标记。问题是如果一名员工在俄罗斯工作,我需要为所有其他员工显示俄罗斯等等 countries/employees。
回到代码示例:
如果我的 Employee
模型查询集 returns 三名员工分别位于德国和俄罗斯这两个国家,我想显示带有标记的德国到俄罗斯的地图,而不是整个世界的地图。我如何从查询集中计算这个最外层的坐标?或者还有什么其他方法可以解决上述问题?
Leaflet 应该能够根据您希望在地图上显示的点计算地图的边界框。这也可以很容易地完成 geodjango
。 extent 就是您要找的。
bounds = Employee.objects.filter(some filter).extent()
这在新版本中已弃用,而是使用:
from django.contrib.gis.db.models import Extent
bounds = Employee.objects.filter(some filter).aggregate(Extent('point'))['point__extent']
在 LefletJS 中:
var mymap = L.map('mapid').fitBounds(51.505, 51.507], [51.56, 50.98]], {padding: [10, 10]});