Zusammenfassen vieler Marker wie bei Googlemaps?

Hallo Ihr,

wenn man eine Karte hat, auf der sehr viele Marker eingezeichnet sind… Kann man das mit openlayers so einstellen, daß z.B. 10 Marker bei einer bestimmten Zoomstufe zu einem anderen Symbol zusammengefaßt werden? Kann man alternativ das Nachladen bestimmter Marker nach Zoomstufe einstellen?

viele Grüße
desputin

Das müsste mit der Cluster Strategy gehen.

Gruß,
ikonor

Da das Vorzeigebeispiel OpenLinkmap
http://olm.openstreetmap.de/info/index.html
grade nicht tut, hier ein Cluster-Beispiel für Haltestellen:
http://dev.lonvia.de/vrsimport
Beim Reinzoomen werden die Cluster zu einzelnen Haltestellen aufgelöst.

Gruß,
ajoessen

Hallo Ihr,

danke für den Tip!

Brauche ich einen eigenen Rootserver um das laufen zu lassen, oder reicht es, die Verzeichnisstruktur auf meinen Webserver hochzuladen? Gibt es eine Anleitung, wie ich OLM verwende, oder reicht es, wenn ich den Source-Code vom Haltestellen-Beispiel anpasse?

bei mir läufts auch mit verzeichnisstruktur.
Mit dem rootserver könnte es eventuell flüssiger laufen?
Zu olm müsstest du den Autor fragen.

Gruß,
ajoessen

Ok, dann werd ich den Entwickler fragen müssen.

Du weißt nicht aber zufällig, in welche Datei die Marker und Popup-Inofs reinkommen, oder?

@ajoessen

Was heißt, bei Dir läuft es auch aus der Verzeichnisstruktur? Wo liegen dann Deine Daten für die Marker?
In der Readme steht was von einer hstore Datenbank. Das würde dann aber schon einen richtigen Server benötigen, oder?
Leider hat mir der Entwickler auf meine Frage hin nicht geantwortet…


== Welche Datenbank(en) wird/werden verwendet? ==

  • verwendet wird die hstore Datenbank für die Popupdetails von nicht-OLM Objekten
  • für die Markerpositionen wird eine verkürzte Datenbank olm-list verwendet
  • für die Details und den Import wird die Datenbank olm benötigt

alles ziemlich unklar, was du da schreibst.

welchen entwickler hast du denn was gefragt?

aber eins muss dir klar sein: irgendwie müssen die Daten irgendwoher in irgendeinem Format herkommen, damit OL die darstellen kann.
Und dafür gibt es hunderte von Verfahren.

  • einfach: kleine Text-Datei auf dem Webserver (dürfe in etwa dem oben angesprochenem ähneln)
  • komplexer: osm-Daten downloaden, mit entsprechenden Filtern verarbeiten und in eine kleine Datei schreiben.
  • noch komplexer: postgresql-DB auf einem lokalen Server, der mit SQL-Abfragen die dynamischen Daten am OL sendet.
    die DB wird durch minütliche Online-Updates mit OSM synchron gehalten

dazwischen gibt es noch verschiedene Abstufungen, die davon abhängen, woher die Daten genau kommen (OSM oder nicht OSM) und wieoft die aktualisiert werden sollen.

Fang einfach mal mit nen Text-Datei (csv-Format?) an und dann kommt der Rest fast wie von selbst.

Gruss
Walter

Hallo Walter,

ok, jetzt ist mir das schon klarer. Da ich vermutlich “nur” 100-500 Marker einbinden möchte, reicht wohl für mich erstmal eine txt/cvs-datei.

Wie kann ich herausfinden, in welcher Ordnung bzw. Reihenfolge die Daten (Texte in Popupboxen und Koordinaten) in die txt/cvs geschrieben werden müssen? Kann ich auch auch html-code in die Popups einbinden? Gibt es da ein Beispiel oder eine Anleitung wie eine solche Textdatei aussehen könnte?

Viele Grüße
desputin

ist absolut egal, da OL ja die Koordinaten braucht und damit arbeitet.

natürlich. kommt nur drauf an, welche Daten dein POPUP-Handler in OL braucht - und den schreibst du ja selber.

sorry, ich hab die DB-Lösung :wink: Da gibt es massenhaft Anleitungen, aber wo genau??? wiki fragen oder ein Kollege erbarmt sich.

Gruss
Walter

Wo hast du denn bereits gesucht? Bei openlayers exampels wird man leider in der Angelegenheit nicht fündig. Aber hier gab es jemand, welcher die meisten deiner Probleme schon mal gelöst hat. Damit habe ich auch angefangen:
http://www.netzwolf.info/kartografie/openlayers/

Hilft dir das Beispiel vielleicht noch mal? Ist entgegen der OLM wirklich nur das notwendigste
usergroups.openstreetmap.de

@ !i!
Wie meinst Du das? was hat usergroups.openstreetmap.de damit zu tun?

@viw
ok, danke, das sieht gut aus. Aber der Netzwolf hat leider nichts zum Thema Zusammenfassung von vielen Markern. Ich hab jedenfalls nichts dergleichen gesehen.

Das hat er nicht, aber ich habe das so verstanden, dass du überhaupt erstmal die Dinger darstellen willst. Das zweite ist dann clustern. Dazu gibts ein Example bei openlayers.

Na du wolltest doch Clustern? Dort wird das mal am Beispiel von KML Dateien gezeigt.

Also Beispiele finden sich bei http://openlayers.org/dev/examples/ schon, Stichworte: “Marker”, “POI” oder “Text” und fürs Zusammenfassen “Cluster”.

Auch im Wiki auf der Openlayers Seite gibt es POI und Marker Beispiele.

Die Beispiele auf Basis von Layer.Text oder Layer.Markers sind aber wohl veraltet und sollten durch Layer.Vector ersetzt werden, siehe OpenLayers Doku. Hier wird allerdings Layer.GML verwendet, das inzwischen ebenfalls als deprecated markiert ist, statt “Layer.GML” müsste man aber einfach “Layer.Vector” schreiben können.

Vermutlich ist es am einfachsten, erst überhaupt mal die Marker darstellen zu können und danach das Clustering einzubauen.

Mit “Bei mir” meinte ich die reine Darstellung der Hintergrundkarte, also ohne Marker und Clustering.

Die hstore Datenbank wird bei olm benutzt, weil die anzuzeigenden Daten direkt aus der lokalen OSM-Datenbank gelesen werden. Wenn deine extrenen Daten in einem anderen Format vorliegen, brauchst du dafür natürlich keine OSM-Datenbank.

Gruß,
ajoessen