dynamische Karten mit OpenLayers und Views in Drupal 7
In meinem ersten Beitrag habe ich euch näher gebracht wie man in Drupal 7 mit den Modulen GeoField und OpenLayers eine grundlegende Karte à la Google Maps erzeugen kann (falls ihr meinen ersten Beitrag nicht gelesen habt, könnt ihr das hier nachholen).
Nun geht es etwas tiefer in die Materie...
Genauer gesagt an das Darstellen einer dynamisch erzeugten und mit Pins von verschiedenen Nodes versehenen Karte mit Hilfe der Module GeoField, OpenLayers und Views.
Ergebnisvorschau
Zuerst muss ein View her, der unseren mit einem Geofield versehenen Inhaltstypen ausgibt. Als Konfiguration, was angezeigt werden soll (Felder, Vollständiger Inhalt, etc) wählen wir OpenLayersMap aus, ob die Karte als Page oder Block ausgeliefert werden soll, kann frei entschieden werden. Damit ist der erste Schritt getan und wir haben eine Karte, allerdings ist sie noch leer, da wir nicht definiert haben was auf ihr angezeigt werden soll und vor allem wie es angezeigt werden soll.
Beispiel des Views
Dazu muss nun in unserem View eine weitere Displayvariante angelegt werden, welche eine weitere Ebene über unsere Karte legt und die Geoinformationen aus den Nodes auf der Karte darstellt, wir legen also einen Overlay-View für unsere Karte an. Als zweite Displayvariante in unserem View wählen wir "OpenLayers Data Overlay" und sorgen dafür, dass die Einstellungen, welche wir nun vornehmen nur für die Overlay-Anzeige greifen.
In unserer Overlay-Anzeige müssen wir nun unsere gewünschten Felder hinzufügen inklusive des Geofields und unter "Format" > "OpenLayers Map" den Radio-Button "OpenLayers Data Overlay" markieren, inklusive der Einschränkung, dass keine anderen Anzeigen in unserem View überschreiben. Nun wird sich eine neue Konfigurationsseite öffnen in der wir als "Map Data Source" WKT auswählen, die weiteren Felder definieren wo unsere Popups platziert werden und wie sie aussehen/welche Informationen sie enthalten.
OpenLayers Data Overlay-Konfiguration
Nun geht es an die Einstellungen von OpenLayers. Da ich bislang die Konfigurationsmöglichkeiten recht vielfältig sind, beziehe ich mich hier auf die Verwendung der Default Map und werde in einem zukünftigen Blogbeitrag detaillierter auf das Erstellen neuer Maps und deren Feinjustierung eingehen.
Die Einstellungen zu den Karten sind unter "Struktur" > "OpenLayers" > "Maps" zu finden und wir verwenden wie angesprochen die Default Map und passen sie unseren Bedürfnissen an.
Ist die Bearbeitung der Map geöffnet sehen wir unter "Layers & Styles" > "Overlay Layers" eine Liste unserer möglichen Overlays und werden, wenn alles geklappt hat auch unseren Overlay-View dort finden. Er muss freigeschaltet, aktiviert und gespeichert werden. Damit sind wir fast schon am Ziel.
Beispiel: "Overlay Layers"-Sektion
Jetzt müssen wir OpenLayers anweisen die Pop-Ups zu erzeugen, wenn man auf einen unserer Karten-Pins klickt. Dazu bearbeiten wir erneut die Default Map und aktivieren unter den Behaviors "Pop up for features" wo wir nun erneut unseren Overlay-View aktivieren und die Karteneinstellungen speichern müssen.
Beispiel "Pop up for features" in den Behaviors
Wenn wir nun Nodes unseres vorbereiteten Inhaltstypen erstellen und die Geofield-Informationen eintragen, sollten diese mit einem Punkt auf der Karte vermerkt werden. Die Darstellung in den Pop-Ups können wir entweder im View über die Felder zusammensetzen oder über die normalen Nodeanzeigeeinstellungen, je nach Wunsch.