Django中的服务器端标记聚类

0 投票
2 回答
989 浏览
提问于 2025-04-15 12:55

我正在用Django和谷歌地图做一个混合应用,我想知道有没有办法在服务器端用Django/Python来对标记进行聚合。

2 个回答

0

我写了下面的代码来判断一个标记是否足够接近另一个标记,以便进行聚类——当两个聚类图标开始重叠时就算接近。这段代码适用于整个世界地图的所有缩放级别。

问题在于地图投影是非线性的,你不能简单地设置一些 delta_langdelta_lat 的容忍度——这两个值会依赖于纬度。不过,对于本地地图来说,这并不是问题。

如果你想在服务器端处理所有内容,你需要为每个缩放级别计算聚类标记,可能是通过每次的 AJAX 调用,或者一次性打印所有标记。

function isCloseTo($other,$z){//$z is zoomlevel
    $delta_lat = abs($this->lattitude - $other->lattitude);
    $delta_lng = abs($this->longitude - $other->longitude);

    $l = abs($this->lattitude);
    $l2 = $l*$l;
    $l3 = $l2*$l;
    $l4 = $l3*$l;

    $factor =   1
            +0.0000312*$l
            +0.0003604*$l2
            -0.000009858*$l3
            +0.0000001506*$l4;

    $tol_lat = (45.42*exp(-0.6894339*$z)/3)/$factor;
    $tol_lng = 21.845*exp(-0.67686*$z)/2;
    if ($delta_lat < $tol_lat and $delta_lng < $tol_lng){
        return true;
    }
    else{
        return false;
    }
}
1

我在我的房地产/租赁网站上实现了Django的服务器端聚类功能;我在这里详细解释了这个过程。

撰写回答