2009-07-15 7 views
0

Ich erstelle ein Mashup in Django und Google Maps und ich frage mich, ob es eine Möglichkeit gibt, Marker auf der Serverseite mit Django/Python zu gruppieren.serverseitige Markierung Clustering in Django

+0

Wenn sich die Punkte, die Sie verwenden, in einer Datenbank befinden, können Sie Ihre Datenbank dazu verwenden. – Petrogad

Antwort

0

Ich kam mit dem unten stehenden Code, um herauszufinden, ob eine Markierung nahe genug an einer anderen für Clustering ist - schließen, wenn zwei Cluster-Symbole beginnen sich zu überlappen. Funktioniert für die gesamte Weltkarte für alle Zoomstufen.

Das Problem ist, dass die Kartenprojektion nicht linear ist und Sie nicht einfach eine Toleranz festlegen können - beide hängen von der Breite ab. Für lokale Karten ist es jedoch kein Problem.

Wenn Sie alles auf der Server-Seite tun möchten, müssen Sie Clustered-Marker für jede Zoomstufe entweder per AJAX-Aufruf berechnen oder sie alle auf einmal ausdrucken.

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

sieht nicht sehr python ... – lhahne

+0

das ist PHP :) aber hoffentlich können Sie die Übersetzung herausfinden :) – Evgeny

1

Ich habe Server-Seite Clustering in Django auf meiner Immobilien/Vermietung Website implementiert; Ich erkläre es here.