django中的服务器端标记聚类

时间:2009-07-15 13:27:54

标签: python django google-maps

我正在django和谷歌地图中创建一个mashup,我想知道是否有一种使用django / python在服务器端聚类标记的方法。

2 个答案:

答案 0 :(得分:1)

我在我的房地产/租赁网站上实现了Django中的服务器端群集;我解释一下here

答案 1 :(得分:0)

我想出了下面的代码,以确定一个标记是否足够接近另一个用于聚类 - 如果两个聚类图标开始重叠则关闭。适用于所有缩放级别的整个世界地图。

问题在于地图投影是非线性的,您不能只设置一些delta_lang delta_lat容差 - 两者都取决于线性。对于本地地图,这不是问题。

如果要在服务器端执行所有操作,则必须根据AJAX调用计算每个zoomlelvel的聚簇标记,或者一次打印所有这些标记。

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