кластеризация маркеров на стороне сервера в Django - PullRequest
0 голосов
/ 15 июля 2009

Я создаю mashup в django и google maps и мне интересно, есть ли способ кластеризации маркеров на стороне сервера с использованием django / python.

Ответы [ 2 ]

1 голос
/ 24 октября 2009

Я внедрил кластеризацию на стороне сервера в Джанго на своем сайте недвижимости / аренды; Я объясняю это здесь .

0 голосов
/ 15 июля 2009

Я придумал приведенный ниже код, чтобы выяснить, достаточно ли одного маркера достаточно близко к другому для кластеризации - закрыть, если два значка кластера начинают перекрываться. Работает для всей карты мира для всех уровней масштабирования.

Проблема в том, что проекция карты нелинейная, и вы не можете просто установить допуск delta_lang delta_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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...