从具有点列的 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 应该能够根据您希望在地图上显示的点计算地图的边界框。这也可以很容易地完成 geodjangoextent 就是您要找的。

 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]});