Markus writes:
Hallo Peter,
liegt der code, speziell der Teil bzgl. des clusterings offen?
Das gefällt mir nämlich sehr gut!
Die Idee stammt von Lars Lingner
Leider nicht. Das hat nicht im Geringsten mit OpenLayers zu tun.
Auf der Einstiegsseite zur Karte sind 150.000 Amenities in einem Bereich den OpenLayers laden will. Das zum Client zu schicken und dort mit Javascript zu clustern halte ich für Blödsinn. Von daher habe ich auch diesen Ansatz nicht weiterverfolgt. Ziel war die Daten bereits auf dem Server zu reduzieren. Ich dachte, dass es da etwas praktisches in PostgreSQL geben müsste. Im PHP code der die Datenbank abfragt wollte ich mich nicht mit bounding-Box vergleichen rumplagen. Was ganz tolles habe ich nicht gefunden, die Lösung wie sie jetzt ist halte ich aber auch für ganz pfiffig. Mein Ansatz ist es die Koordinaten der Punkte auf ein "Gitter" zu runden das der Größe der Symbole der jeweiligen Zoomstufe entspricht. Dafür gibt die Website auch den aktuellen Zoomlevel bzw. Auflösung an das Backend weiter. In der Datenbank werden die einzelnen Treffer dann auf dieses Gitter abgebildet: // calculate clustering value. resolution is per pixel, so multiply by size of icon, take overlap factor into account
     $clvalue = 32*$resolution*0.9;
$cluster = ", st_astext(st_makepoint(round(st_x(way)/$clvalue)*$clvalue,round(st_y(way)/$c lvalue)*$clvalue)) as cluster"; die neue Spalte "cluster" fasse ich dann später mit GROUP BY zusammen, über count() ermittle ich noch die Anzahl an Elementen pro Gitterpunkt. Die jetzige Umsetzung entscheidet nur ob sie ein Clustericon verwendet oder nicht. Denkbar sind auch verschiedene Icons in Abhängigkeit von der Zahl der Einträge darunter. Die Werte könnten auch direkt an den Client geschickt werden um dort mit openLayers geometrien die Darstellung zu machen. z.B. Kreise um so größer je mehr Einträge oder kräftigere Farben oder auch eine Zahl in dem Icon die die Anzahl der geclusterten Elemente anzeigt. Quellcode (GPL) ist seit der Veröffentlichung verfügbar, ist auch auf der Toolserver Seite so verlinkt.
http://svn.toolserver.org/svnroot/stephankn/
Ich freue mich wenn ihr den Code für etwas sinnvolles verwenden könnt. Wenn sich daran was verbessern lässt: Gerne. Nichts ist perfekt. Ich freue mich auch wenn ihr einen Link auf eure Anwendung schickt. Vielleicht lässt sich dafür ja auch eine Art Bibliothek bauen. Abfragen nach Spezialfeatures sind bestimmt eine häufigere Anwendung.
Stephan

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an