<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.2.78.26</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=176.2.78.26"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/176.2.78.26"/>
	<updated>2026-05-06T19:23:16Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Processwire_-_Leaflet_Map_Marker_Modul&amp;diff=27168</id>
		<title>Processwire - Leaflet Map Marker Modul</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Processwire_-_Leaflet_Map_Marker_Modul&amp;diff=27168"/>
		<updated>2024-07-16T13:26:30Z</updated>

		<summary type="html">&lt;p&gt;176.2.78.26: /* Marker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Siehe auch ==&lt;br /&gt;
 https://processwire.com/talk/topic/9745-module-leaflet-map/?page=5 (Forum)&lt;br /&gt;
 https://github.com/gmclelland/FieldtypeLeafletMapMarker/blob/PW3/InputfieldLeafletMapMarker.module (Fork)&lt;br /&gt;
 https://leafletjs.com/ (Leaflet Hauptseite)&lt;br /&gt;
 https://leaflet-extras.github.io/leaflet-providers/preview/index.html (Karten Provider)&lt;br /&gt;
 https://github.com/Leaflet/Leaflet.markercluster (Doku für Cluster Modul)&lt;br /&gt;
 https://github.com/leaflet-extras/leaflet-providers&lt;br /&gt;
== Überblick ==&lt;br /&gt;
Wird aus Zeitgründen vom Entwickler nicht sehr aktiv weitergepflegt. Allerdings gibt es ordentlichen Support im Forum und ein paar Forks auf Github.&lt;br /&gt;
&lt;br /&gt;
Man kann für spezielle Anforderungen auch nur das Feld im Backend nutzen und Leaflet im Frontend selbst aufsetzen bzw. eigene Skripte nutzen. Das JavaScript für die Frontendausgabe im Modul findet man in:&lt;br /&gt;
 MarkupLeafletMap.js (JavaScript für Frontend-Ausgabe)&lt;br /&gt;
 MarkupLeafletMap.module (Inline JS für Frontend ) &lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
* Benötigt die Konfiguration von &amp;#039;&amp;#039;&amp;#039;$additionalHeaderData&amp;#039;&amp;#039;&amp;#039;. Das ist einfach ein String der in &amp;#039;&amp;#039;_init.php&amp;#039;&amp;#039; angelegt und im &amp;#039;&amp;#039;Header eingebunden&amp;#039;&amp;#039; wird. Damit lassen sich Zusätzliche Daten per Template rendern. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Feldname&amp;#039;&amp;#039;&amp;#039; im Backend ist hier &amp;#039;&amp;#039;&amp;#039;map_leaflet&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Achtung Bug (V2.8.1): Immer den Geocoder auf der Seite benutzen. Die Standarddaten aus der Feldkonfiguration werden nicht richtig übernommen (Adressfeld) und es gibt Ausgabefehler.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$map = wire(&amp;#039;modules&amp;#039;)-&amp;gt;get(&amp;#039;MarkupLeafletMap&amp;#039;);&lt;br /&gt;
$additionalHeaderData = $map-&amp;gt;getLeafletMapHeaderLines();&lt;br /&gt;
$mapMarkup = $map-&amp;gt;render($page, &amp;#039;map_leaflet ,array(&amp;#039;markerColour&amp;#039; =&amp;gt; &amp;#039;green&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
$content .= &amp;#039;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;content_bottom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Button GM --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gmroute&amp;quot; style=&amp;quot;z-index: 30001;position: relative;height: 24px;right: 20px;top: 40px;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;a class=&amp;quot;gmroute-link&amp;quot; href=&amp;quot;https://www.google.de/maps/dir//Lange+Str.+9+D-72829+Engstingen&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;float: right;&amp;quot;&amp;gt;Route planen&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Map --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;col span_12&amp;quot;&amp;gt;&amp;#039;.$mapMarkup.&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wichtige Dateien - wo finde ich was ==&lt;br /&gt;
Todo -&amp;gt; für aktualisierung von leaflet notwendige Änderungen dokumentieren.&lt;br /&gt;
&lt;br /&gt;
== Daten manuell auslesen und verarbeiten ==&lt;br /&gt;
Einfaches Beispiel das auch bei AJAX Seiten funktioniert und einen Button zur Google Maps Wegbeschreibung enthält.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// If AJAX put this in _init.php else uncomment next two lines&lt;br /&gt;
// $map = wire(&amp;#039;modules&amp;#039;)-&amp;gt;get(&amp;#039;MarkupLeafletMap&amp;#039;);&lt;br /&gt;
// $additionalHeaderData = $map-&amp;gt;getLeafletMapHeaderLines();&lt;br /&gt;
&lt;br /&gt;
$myAdress = $page-&amp;gt;map_leaflet-&amp;gt;address;	// outputs the address you entered&lt;br /&gt;
$myLat = $page-&amp;gt;map_leaflet-&amp;gt;lat; 		// outputs the latitude&lt;br /&gt;
$myLng = $page-&amp;gt;map_leaflet-&amp;gt;lng; 		// outputs the longitude&lt;br /&gt;
$myZoom = $page-&amp;gt;map_leaflet-&amp;gt;zoom;		// outputs the zoom level&lt;br /&gt;
&lt;br /&gt;
$mapMarkup = &amp;quot;&lt;br /&gt;
&amp;lt;div id=&amp;#039;mleafletmap1&amp;#039;style=&amp;#039;height:400px;&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var mleafletmap1 = new jsMarkupLeafletMap();&lt;br /&gt;
 mleafletmap1.setOption(&amp;#039;zoom&amp;#039;, $myZoom);&lt;br /&gt;
  mleafletmap1.init(&amp;#039;mleafletmap1&amp;#039;, $myLat, $myLng, &amp;#039;OpenStreetMap.Mapnik&amp;#039;);&lt;br /&gt;
  var default_marker_icon = L.AwesomeMarkers.icon({ icon: &amp;#039;home&amp;#039;, iconColor: &amp;#039;white&amp;#039;, prefix: &amp;#039;fa&amp;#039;, markerColor: &amp;#039;darkblue&amp;#039; });&lt;br /&gt;
  mleafletmap1.addMarkerIcon(default_marker_icon, $myLat, $myLng, &amp;#039;/kontakt/&amp;#039;, &amp;#039;Kontakt&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$content .= &amp;#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gmroute&amp;quot; style=&amp;quot;z-index: 30001;position: relative;height: 24px;right: 20px;top: 40px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;gmroute-link&amp;quot; href=&amp;quot;https://www.google.de/maps/dir//Meine+Str.+9+D-72829+Engstingen&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;float: right;&amp;quot;&amp;gt;Route planen&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;col-sm-12&amp;quot; style=&amp;quot;height:400px;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
    .$mapMarkup.&amp;#039;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Geocoder ==&lt;br /&gt;
Das Modul verwendet an zwei Stellen einen Geocoder. &lt;br /&gt;
&lt;br /&gt;
Am wichtigsten ist er wenn man ein Feld definiert hat. In der Karte gibt es eine kleine Lupe mit der man nach Adressen suchen kann. Dies wird realisiert über die JavaScript Datei:&lt;br /&gt;
 Control.Geocoder.js&lt;br /&gt;
Sie enthält Code für verschiedene Geocoding Dienste. Standard ist Nominatim (von OpenStreetMap). Eventuell muss man diesen Code ab und zu anpassen, wenn sich die APIs der Anbieter ändern.&lt;br /&gt;
&lt;br /&gt;
Die zweite Stelle ist die Eingabe der Default Adresse, wenn man ein Feld definiert. Er befindet sich in der Datei&lt;br /&gt;
 LeafletMapMarker.js&lt;br /&gt;
Hier wird eine Klasse LeafletMapMarker definiert, die eine Funktion geocode() besitzt. Diese nutzt den Nominatim (OpenStreetMap) Dienst. Die Funktion läßt sich geschickt für eigene Zwecke missbrauchen. Man könnte evtl. beim Speichern einer Seite über einen Hook eine Geocodierung vornehmen wenn man eine Seite hat die bereits Adressfelder hat.&lt;br /&gt;
&lt;br /&gt;
== Marker ==&lt;br /&gt;
=== Woher kommen die Marker Popup-Daten? ===&lt;br /&gt;
Generell kommt das Inline Script, dass für die Optionen und Marker der Karte zuständig ist aus MarkupLeafletMap.module.&lt;br /&gt;
In den Optionen wird angegeben woher (aus welchem Feld) die Inhalte für das Marker Popup kommen sollen:&lt;br /&gt;
&lt;br /&gt;
Titel und URL kommen über die Optionen markerLinkField und markerTitleField&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$url   = $options[&amp;#039;markerLinkField&amp;#039;]  ? $page-&amp;gt;get($options[&amp;#039;markerLinkField&amp;#039;])  : &amp;#039;&amp;#039;;&lt;br /&gt;
$title = $options[&amp;#039;markerTitleField&amp;#039;] ? $page-&amp;gt;get($options[&amp;#039;markerTitleField&amp;#039;]) : &amp;#039;&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Inhalt selbst kommt über eine Callback-Funktion die man z.b.so definieren kann:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$options = array(&lt;br /&gt;
    &amp;#039;popupFormatter&amp;#039; =&amp;gt; function($page) {&lt;br /&gt;
        $out[] = &amp;quot;&amp;lt;strong&amp;gt;Contact: $page-&amp;gt;phone_number&amp;lt;/strong&amp;gt;&amp;quot;;&lt;br /&gt;
        $out[] = &amp;quot;&amp;lt;img src=\&amp;quot;{$page-&amp;gt;image-&amp;gt;url}\&amp;quot; width=\&amp;quot;100\&amp;quot; height=\&amp;quot;100\&amp;quot; /&amp;gt;&amp;quot;; // ** NB: Use escaped double quotes if HTML attributes needed **&lt;br /&gt;
        return implode(&amp;#039;&amp;lt;br/&amp;gt;&amp;#039;, $out);&lt;br /&gt;
    }&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Erweiterung für Orte auf Referenzen ===&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Siehe Webmynet Cloud für aktuelles Beispiel&lt;br /&gt;
cloud.webmynet.de (Developer/ProcessWire/Module)&lt;br /&gt;
&lt;br /&gt;
=== Multiple Markers ===&lt;br /&gt;
Die Render Funktion kann auch mit mehreren Seitenobjekten umgehen und erstellt dann eine Karte mit mehreren Markern.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$items = $pages-&amp;gt;find(&amp;quot;A SELECTOR THAT GETS YOUR PAGES WITH MARKER FIELDS&amp;quot;);&lt;br /&gt;
echo $map-&amp;gt;render($items, &amp;#039;YOUR MARKER FIELD&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Multiple Markers von selektierten Seiten ===&lt;br /&gt;
Es sollen Orte (LeafletMapMarker) von Unterseiten geholt werden und aus diesen eine Map mit mehreren Markern generiert werden. Viele Marker auf engem Raum werden geclustert.&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen im Beispiel&lt;br /&gt;
* die Kindseiten werden über ihr template selektiert. Im Beispiel wird das durch ein Textfeld im Parent Template festgelegt (Feldname template_title)&lt;br /&gt;
* der Leaflet code wird nur bei Bedarf geladen. Das geschieht über eine Switch Anweisung im Repeater&lt;br /&gt;
* Leaflet Dateien sind lokal hinterlegt (siehe js und css Anweisungen).&lt;br /&gt;
 &lt;br /&gt;
mytemplate.php &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$additionalHeaderData .= &amp;#039;&lt;br /&gt;
&amp;lt;!-- Styles supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/MarkerCluster.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;styles/MarkerCluster.Custom.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Scripts supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/leaflet.markercluster.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-providers/leaflet-providers.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/MarkupLeafletMap.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Extend Leaflet with Awesome.Markers --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
$map = wire(&amp;#039;modules&amp;#039;)-&amp;gt;get(&amp;#039;MarkupLeafletMap&amp;#039;);&lt;br /&gt;
$options = array(&amp;#039;markerColour&amp;#039; =&amp;gt; &amp;#039;green&amp;#039;);&lt;br /&gt;
$mySelector = &amp;#039;template=event&amp;#039;;&lt;br /&gt;
$places = $pages-&amp;gt;find($mySelector);&lt;br /&gt;
$mapMarkup = $map-&amp;gt;render($places, &amp;#039;location&amp;#039; ,$options);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Leaflet Skripte lokal einbinden (keine externen Skripte laden) ===&lt;br /&gt;
Dies sind die benötigten Header Zeilen. leaflet.css und leaflet.js sollte dann entsprechend vorhanden sein. Der Rest kommat aus dem Modul Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Font Awesome muß ebenfalls vorhanden sein (Bisher - September 2018, die 4er Version).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$additionalHeaderData = &amp;#039;&lt;br /&gt;
&amp;lt;!-- Styles supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/MarkerCluster.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;styles/MarkerCluster.Custom.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Scripts supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/leaflet.markercluster.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-providers/leaflet-providers.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/MarkupLeafletMap.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Extend Leaflet with Awesome.Markers --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scroll Zoom abschalten ===&lt;br /&gt;
Am einfachsten im Modul (Nachteil: Vorsicht beim Update)&lt;br /&gt;
&lt;br /&gt;
Evtl. fürs Frontend könnte man auch im Nachhinein in einem eigenen Skript abschalten über die Funktion:&lt;br /&gt;
 map.scrollWheelZoom.disable(); // map ist die Mapinstanz. Muß evtl. angepasst werden.&lt;br /&gt;
&lt;br /&gt;
==== Im Frontend (Fieldtype)====&lt;br /&gt;
 /site/modules/FieldtypeLeafletMapMarker/MarkupLeafletMap.js&lt;br /&gt;
In MarkupLeafletMap.js die Option hinzufügen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
this.options = {&lt;br /&gt;
        zoom: 10,&lt;br /&gt;
        center: null,&lt;br /&gt;
        scrollWheelZoom: false, // diese option einfügen&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    this._currentURL = &amp;#039;&amp;#039;;&lt;br /&gt;
    this.init = function(mapID, lat, lng, provider) {&lt;br /&gt;
        if(lat != 0) this.map = L.map(mapID, {&lt;br /&gt;
          center: [lat, lng],&lt;br /&gt;
          zoom: this.options.zoom,&lt;br /&gt;
          scrollWheelZoom: this.options.scrollWheelZoom // und dieses wenn nicht vorhanden&lt;br /&gt;
        } );&lt;br /&gt;
        L.tileLayer.provider(provider).addTo(this.map);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Im Backend ====&lt;br /&gt;
Hier muß mann den Code des Inputfield anpassen. Direkt in den Optionen hat das bei mir nicht funktioniert. Sieht so aus als ob nur der zoom statt alle Optionen gesetzt wird. Daher einfach nach der Instanzerzeugung der karte den ScrollWheelZoom abschalten:&lt;br /&gt;
&lt;br /&gt;
FieldtypeLeafletMapMarker/InputfieldLeafletMapMarker.js&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var map = L.map(document.getElementById(mapId)). setView([lat, lng], options.zoom); // nach dem hier&lt;br /&gt;
map.scrollWheelZoom.disable(); // dieses einfügen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul Gesture Handling ===&lt;br /&gt;
 [[Leaflet - Gesture Handling]]&lt;br /&gt;
 https://elmarquis.github.io/Leaflet.GestureHandling/&lt;br /&gt;
 Bildet das Verhalten von Google Maps nach:&lt;br /&gt;
Desktop &lt;br /&gt;
* Karte Ignoriert Mausrad&lt;br /&gt;
* User wird Informiert mit ctrl+scrool Karte zoomen&lt;br /&gt;
Mobile&lt;br /&gt;
* Karte ignoriert Ein Finger Drag&lt;br /&gt;
* User wird über 2 Finger Pan informiert&lt;br /&gt;
&lt;br /&gt;
==== In ProcessWire einbauen ====&lt;br /&gt;
* Unterordner &amp;#039;dist&amp;#039; in &amp;#039;Leaflet.GestureHandling&amp;#039; umbenennen und im FieldtypeLeafletMapMarker Modul unter assets ablegen&lt;br /&gt;
*  anpassen des JS für die Frontendausgabe&lt;br /&gt;
 /site/modules/FieldtypeLeafletMapMarker/MarkupLeafletMap.js&lt;br /&gt;
* Init Funktion anpassen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    this.init = function(mapID, lat, lng, provider) {&lt;br /&gt;
        if(lat != 0) this.map = L.map(mapID, {&lt;br /&gt;
          center: [lat, lng],&lt;br /&gt;
          zoom: this.options.zoom,&lt;br /&gt;
          scrollWheelZoom: this.options.scrollWheelZoom,&lt;br /&gt;
          gestureHandling: true&lt;br /&gt;
        } );&lt;br /&gt;
        L.tileLayer.provider(provider).addTo(this.map);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Einbinden von CSS und JS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Extend Leaflet with Gesture Handling --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/Leaflet.GestureHandling/leaflet-gesture-handling.min.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/Leaflet.GestureHandling/leaflet-gesture-handling.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var cities = new L.LayerGroup();&lt;br /&gt;
&lt;br /&gt;
	L.marker([39.61, -105.02]).bindPopup(&amp;#039;This is Littleton, CO.&amp;#039;).addTo(cities),&lt;br /&gt;
	L.marker([39.74, -104.99]).bindPopup(&amp;#039;This is Denver, CO.&amp;#039;).addTo(cities),&lt;br /&gt;
	L.marker([39.73, -104.8]).bindPopup(&amp;#039;This is Aurora, CO.&amp;#039;).addTo(cities),&lt;br /&gt;
	L.marker([39.77, -105.23]).bindPopup(&amp;#039;This is Golden, CO.&amp;#039;).addTo(cities);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	var mbAttr = &amp;#039;Map data &amp;amp;copy; &amp;lt;a href=&amp;quot;http://openstreetmap.org&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt; contributors, &amp;#039; +&lt;br /&gt;
			&amp;#039;&amp;lt;a href=&amp;quot;http://creativecommons.org/licenses/by-sa/2.0/&amp;quot;&amp;gt;CC-BY-SA&amp;lt;/a&amp;gt;, &amp;#039; +&lt;br /&gt;
			&amp;#039;Imagery © &amp;lt;a href=&amp;quot;http://mapbox.com&amp;quot;&amp;gt;Mapbox&amp;lt;/a&amp;gt;&amp;#039;,&lt;br /&gt;
		mbUrl = &amp;#039;https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	var grayscale   = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.light&amp;#039;, attribution: mbAttr}),&lt;br /&gt;
		streets  = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.streets&amp;#039;,   attribution: mbAttr});&lt;br /&gt;
&lt;br /&gt;
	var map = L.map(&amp;#039;map&amp;#039;, {&lt;br /&gt;
		center: [39.73, -104.99],&lt;br /&gt;
		zoom: 10,&lt;br /&gt;
		layers: [grayscale, cities]&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	var baseLayers = {&lt;br /&gt;
		&amp;quot;Grayscale&amp;quot;: grayscale,&lt;br /&gt;
		&amp;quot;Streets&amp;quot;: streets&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var overlays = {&lt;br /&gt;
		&amp;quot;Cities&amp;quot;: cities&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	L.control.layers(baseLayers, overlays).addTo(map);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Popup über URL Parameter öffnen ===&lt;br /&gt;
 https://stackoverflow.com/questions/29004617/open-leaflet-marker-using-url-parameter-not-working-now-that-markercluster-is-us&lt;br /&gt;
&lt;br /&gt;
== Weitere Kartenanbieter ==&lt;br /&gt;
Leaflet Map Marker liefert einige Provider mit. Man kann sie über die  &amp;#039;&amp;#039;&amp;#039;Option provider auswählen&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
 &amp;quot;provider&amp;quot; =&amp;gt; &amp;#039;OpenStreetMap.Mapnik&amp;#039;,&lt;br /&gt;
So lassen sich auch andere Anbieter nutzen:&lt;br /&gt;
 &amp;quot;provider&amp;quot; =&amp;gt; &amp;#039;Stadia.AlidadeSmooth&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
Das JavaScript für die Anbieter liegt in &amp;#039;&amp;#039;&amp;#039;leaflet-providers.js&amp;#039;&amp;#039;&amp;#039;. Dort kann man auch weitere Provider anlegen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// ...&lt;br /&gt;
Stadia: {&lt;br /&gt;
			url: &amp;#039;https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png&amp;#039;,&lt;br /&gt;
			options: {&lt;br /&gt;
				maxZoom: 20,&lt;br /&gt;
				attribution: &amp;#039;&amp;amp;copy; &amp;lt;a href=&amp;quot;https://stadiamaps.com/&amp;quot;&amp;gt;Stadia Maps&amp;lt;/a&amp;gt;, &amp;amp;copy; &amp;lt;a href=&amp;quot;https://openmaptiles.org/&amp;quot;&amp;gt;OpenMapTiles&amp;lt;/a&amp;gt; &amp;amp;copy; &amp;lt;a href=&amp;quot;http://openstreetmap.org&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt; contributors&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			variants: {&lt;br /&gt;
				AlidadeSmooth: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				AlidadeSmoothDark: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				OSMBright: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				Outdoors: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
// ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customization Examples ==&lt;br /&gt;
=== Marker direkt verlinken (kein PopUp) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var marker = L.marker([52, 12], {});&lt;br /&gt;
marker.url = &amp;#039;www.google.com&amp;#039;&lt;br /&gt;
&lt;br /&gt;
marker.on(&amp;#039;click&amp;#039;, function(){&lt;br /&gt;
window.location = (this.url);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Probleme beheben ==&lt;br /&gt;
=== Feld zeigt an Error Geocoding ===&lt;br /&gt;
File Cache komplett löschen (assets/cache/...)&lt;/div&gt;</summary>
		<author><name>176.2.78.26</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Processwire_-_Leaflet_Map_Marker_Modul&amp;diff=27167</id>
		<title>Processwire - Leaflet Map Marker Modul</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Processwire_-_Leaflet_Map_Marker_Modul&amp;diff=27167"/>
		<updated>2024-07-16T13:17:44Z</updated>

		<summary type="html">&lt;p&gt;176.2.78.26: /* Geocoder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Siehe auch ==&lt;br /&gt;
 https://processwire.com/talk/topic/9745-module-leaflet-map/?page=5 (Forum)&lt;br /&gt;
 https://github.com/gmclelland/FieldtypeLeafletMapMarker/blob/PW3/InputfieldLeafletMapMarker.module (Fork)&lt;br /&gt;
 https://leafletjs.com/ (Leaflet Hauptseite)&lt;br /&gt;
 https://leaflet-extras.github.io/leaflet-providers/preview/index.html (Karten Provider)&lt;br /&gt;
 https://github.com/Leaflet/Leaflet.markercluster (Doku für Cluster Modul)&lt;br /&gt;
 https://github.com/leaflet-extras/leaflet-providers&lt;br /&gt;
== Überblick ==&lt;br /&gt;
Wird aus Zeitgründen vom Entwickler nicht sehr aktiv weitergepflegt. Allerdings gibt es ordentlichen Support im Forum und ein paar Forks auf Github.&lt;br /&gt;
&lt;br /&gt;
Man kann für spezielle Anforderungen auch nur das Feld im Backend nutzen und Leaflet im Frontend selbst aufsetzen bzw. eigene Skripte nutzen. Das JavaScript für die Frontendausgabe im Modul findet man in:&lt;br /&gt;
 MarkupLeafletMap.js (JavaScript für Frontend-Ausgabe)&lt;br /&gt;
 MarkupLeafletMap.module (Inline JS für Frontend ) &lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
* Benötigt die Konfiguration von &amp;#039;&amp;#039;&amp;#039;$additionalHeaderData&amp;#039;&amp;#039;&amp;#039;. Das ist einfach ein String der in &amp;#039;&amp;#039;_init.php&amp;#039;&amp;#039; angelegt und im &amp;#039;&amp;#039;Header eingebunden&amp;#039;&amp;#039; wird. Damit lassen sich Zusätzliche Daten per Template rendern. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Feldname&amp;#039;&amp;#039;&amp;#039; im Backend ist hier &amp;#039;&amp;#039;&amp;#039;map_leaflet&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Achtung Bug (V2.8.1): Immer den Geocoder auf der Seite benutzen. Die Standarddaten aus der Feldkonfiguration werden nicht richtig übernommen (Adressfeld) und es gibt Ausgabefehler.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$map = wire(&amp;#039;modules&amp;#039;)-&amp;gt;get(&amp;#039;MarkupLeafletMap&amp;#039;);&lt;br /&gt;
$additionalHeaderData = $map-&amp;gt;getLeafletMapHeaderLines();&lt;br /&gt;
$mapMarkup = $map-&amp;gt;render($page, &amp;#039;map_leaflet ,array(&amp;#039;markerColour&amp;#039; =&amp;gt; &amp;#039;green&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
$content .= &amp;#039;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;content_bottom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Button GM --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gmroute&amp;quot; style=&amp;quot;z-index: 30001;position: relative;height: 24px;right: 20px;top: 40px;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;a class=&amp;quot;gmroute-link&amp;quot; href=&amp;quot;https://www.google.de/maps/dir//Lange+Str.+9+D-72829+Engstingen&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;float: right;&amp;quot;&amp;gt;Route planen&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Map --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;col span_12&amp;quot;&amp;gt;&amp;#039;.$mapMarkup.&amp;#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wichtige Dateien - wo finde ich was ==&lt;br /&gt;
Todo -&amp;gt; für aktualisierung von leaflet notwendige Änderungen dokumentieren.&lt;br /&gt;
&lt;br /&gt;
== Daten manuell auslesen und verarbeiten ==&lt;br /&gt;
Einfaches Beispiel das auch bei AJAX Seiten funktioniert und einen Button zur Google Maps Wegbeschreibung enthält.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// If AJAX put this in _init.php else uncomment next two lines&lt;br /&gt;
// $map = wire(&amp;#039;modules&amp;#039;)-&amp;gt;get(&amp;#039;MarkupLeafletMap&amp;#039;);&lt;br /&gt;
// $additionalHeaderData = $map-&amp;gt;getLeafletMapHeaderLines();&lt;br /&gt;
&lt;br /&gt;
$myAdress = $page-&amp;gt;map_leaflet-&amp;gt;address;	// outputs the address you entered&lt;br /&gt;
$myLat = $page-&amp;gt;map_leaflet-&amp;gt;lat; 		// outputs the latitude&lt;br /&gt;
$myLng = $page-&amp;gt;map_leaflet-&amp;gt;lng; 		// outputs the longitude&lt;br /&gt;
$myZoom = $page-&amp;gt;map_leaflet-&amp;gt;zoom;		// outputs the zoom level&lt;br /&gt;
&lt;br /&gt;
$mapMarkup = &amp;quot;&lt;br /&gt;
&amp;lt;div id=&amp;#039;mleafletmap1&amp;#039;style=&amp;#039;height:400px;&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var mleafletmap1 = new jsMarkupLeafletMap();&lt;br /&gt;
 mleafletmap1.setOption(&amp;#039;zoom&amp;#039;, $myZoom);&lt;br /&gt;
  mleafletmap1.init(&amp;#039;mleafletmap1&amp;#039;, $myLat, $myLng, &amp;#039;OpenStreetMap.Mapnik&amp;#039;);&lt;br /&gt;
  var default_marker_icon = L.AwesomeMarkers.icon({ icon: &amp;#039;home&amp;#039;, iconColor: &amp;#039;white&amp;#039;, prefix: &amp;#039;fa&amp;#039;, markerColor: &amp;#039;darkblue&amp;#039; });&lt;br /&gt;
  mleafletmap1.addMarkerIcon(default_marker_icon, $myLat, $myLng, &amp;#039;/kontakt/&amp;#039;, &amp;#039;Kontakt&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$content .= &amp;#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gmroute&amp;quot; style=&amp;quot;z-index: 30001;position: relative;height: 24px;right: 20px;top: 40px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;gmroute-link&amp;quot; href=&amp;quot;https://www.google.de/maps/dir//Meine+Str.+9+D-72829+Engstingen&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;float: right;&amp;quot;&amp;gt;Route planen&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;col-sm-12&amp;quot; style=&amp;quot;height:400px;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
    .$mapMarkup.&amp;#039;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Geocoder ==&lt;br /&gt;
Das Modul verwendet an zwei Stellen einen Geocoder. &lt;br /&gt;
&lt;br /&gt;
Am wichtigsten ist er wenn man ein Feld definiert hat. In der Karte gibt es eine kleine Lupe mit der man nach Adressen suchen kann. Dies wird realisiert über die JavaScript Datei:&lt;br /&gt;
 Control.Geocoder.js&lt;br /&gt;
Sie enthält Code für verschiedene Geocoding Dienste. Standard ist Nominatim (von OpenStreetMap). Eventuell muss man diesen Code ab und zu anpassen, wenn sich die APIs der Anbieter ändern.&lt;br /&gt;
&lt;br /&gt;
Die zweite Stelle ist die Eingabe der Default Adresse, wenn man ein Feld definiert. Er befindet sich in der Datei&lt;br /&gt;
 LeafletMapMarker.js&lt;br /&gt;
Hier wird eine Klasse LeafletMapMarker definiert, die eine Funktion geocode() besitzt. Diese nutzt den Nominatim (OpenStreetMap) Dienst. Die Funktion läßt sich geschickt für eigene Zwecke missbrauchen. Man könnte evtl. beim Speichern einer Seite über einen Hook eine Geocodierung vornehmen wenn man eine Seite hat die bereits Adressfelder hat.&lt;br /&gt;
&lt;br /&gt;
== Marker ==&lt;br /&gt;
=== Woher kommen die Marker Popup-Daten? ===&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Siehe Webmynet Cloud für aktuelles Beispiel&lt;br /&gt;
cloud.webmynet.de (Developer/ProcessWire/Module)&lt;br /&gt;
&lt;br /&gt;
=== Multiple Markers ===&lt;br /&gt;
Die Render Funktion kann auch mit mehreren Seitenobjekten umgehen und erstellt dann eine Karte mit mehreren Markern.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$items = $pages-&amp;gt;find(&amp;quot;A SELECTOR THAT GETS YOUR PAGES WITH MARKER FIELDS&amp;quot;);&lt;br /&gt;
echo $map-&amp;gt;render($items, &amp;#039;YOUR MARKER FIELD&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Multiple Markers von selektierten Seiten ===&lt;br /&gt;
Es sollen Orte (LeafletMapMarker) von Unterseiten geholt werden und aus diesen eine Map mit mehreren Markern generiert werden. Viele Marker auf engem Raum werden geclustert.&lt;br /&gt;
&lt;br /&gt;
Voraussetzungen im Beispiel&lt;br /&gt;
* die Kindseiten werden über ihr template selektiert. Im Beispiel wird das durch ein Textfeld im Parent Template festgelegt (Feldname template_title)&lt;br /&gt;
* der Leaflet code wird nur bei Bedarf geladen. Das geschieht über eine Switch Anweisung im Repeater&lt;br /&gt;
* Leaflet Dateien sind lokal hinterlegt (siehe js und css Anweisungen).&lt;br /&gt;
 &lt;br /&gt;
mytemplate.php &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$additionalHeaderData .= &amp;#039;&lt;br /&gt;
&amp;lt;!-- Styles supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/MarkerCluster.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;styles/MarkerCluster.Custom.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Scripts supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/leaflet.markercluster.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-providers/leaflet-providers.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/MarkupLeafletMap.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Extend Leaflet with Awesome.Markers --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
$map = wire(&amp;#039;modules&amp;#039;)-&amp;gt;get(&amp;#039;MarkupLeafletMap&amp;#039;);&lt;br /&gt;
$options = array(&amp;#039;markerColour&amp;#039; =&amp;gt; &amp;#039;green&amp;#039;);&lt;br /&gt;
$mySelector = &amp;#039;template=event&amp;#039;;&lt;br /&gt;
$places = $pages-&amp;gt;find($mySelector);&lt;br /&gt;
$mapMarkup = $map-&amp;gt;render($places, &amp;#039;location&amp;#039; ,$options);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Leaflet Skripte lokal einbinden (keine externen Skripte laden) ===&lt;br /&gt;
Dies sind die benötigten Header Zeilen. leaflet.css und leaflet.js sollte dann entsprechend vorhanden sein. Der Rest kommat aus dem Modul Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Font Awesome muß ebenfalls vorhanden sein (Bisher - September 2018, die 4er Version).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$additionalHeaderData = &amp;#039;&lt;br /&gt;
&amp;lt;!-- Styles supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/MarkerCluster.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;styles/MarkerCluster.Custom.css&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Scripts supporting the use of Leaflet.js --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;templates.&amp;#039;vendors/leaflet/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-markercluster/leaflet.markercluster.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-providers/leaflet-providers.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/MarkupLeafletMap.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Extend Leaflet with Awesome.Markers --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/leaflet-awesome-markers/leaflet.awesome-markers.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scroll Zoom abschalten ===&lt;br /&gt;
Am einfachsten im Modul (Nachteil: Vorsicht beim Update)&lt;br /&gt;
&lt;br /&gt;
Evtl. fürs Frontend könnte man auch im Nachhinein in einem eigenen Skript abschalten über die Funktion:&lt;br /&gt;
 map.scrollWheelZoom.disable(); // map ist die Mapinstanz. Muß evtl. angepasst werden.&lt;br /&gt;
&lt;br /&gt;
==== Im Frontend (Fieldtype)====&lt;br /&gt;
 /site/modules/FieldtypeLeafletMapMarker/MarkupLeafletMap.js&lt;br /&gt;
In MarkupLeafletMap.js die Option hinzufügen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
this.options = {&lt;br /&gt;
        zoom: 10,&lt;br /&gt;
        center: null,&lt;br /&gt;
        scrollWheelZoom: false, // diese option einfügen&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    this._currentURL = &amp;#039;&amp;#039;;&lt;br /&gt;
    this.init = function(mapID, lat, lng, provider) {&lt;br /&gt;
        if(lat != 0) this.map = L.map(mapID, {&lt;br /&gt;
          center: [lat, lng],&lt;br /&gt;
          zoom: this.options.zoom,&lt;br /&gt;
          scrollWheelZoom: this.options.scrollWheelZoom // und dieses wenn nicht vorhanden&lt;br /&gt;
        } );&lt;br /&gt;
        L.tileLayer.provider(provider).addTo(this.map);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Im Backend ====&lt;br /&gt;
Hier muß mann den Code des Inputfield anpassen. Direkt in den Optionen hat das bei mir nicht funktioniert. Sieht so aus als ob nur der zoom statt alle Optionen gesetzt wird. Daher einfach nach der Instanzerzeugung der karte den ScrollWheelZoom abschalten:&lt;br /&gt;
&lt;br /&gt;
FieldtypeLeafletMapMarker/InputfieldLeafletMapMarker.js&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var map = L.map(document.getElementById(mapId)). setView([lat, lng], options.zoom); // nach dem hier&lt;br /&gt;
map.scrollWheelZoom.disable(); // dieses einfügen.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul Gesture Handling ===&lt;br /&gt;
 [[Leaflet - Gesture Handling]]&lt;br /&gt;
 https://elmarquis.github.io/Leaflet.GestureHandling/&lt;br /&gt;
 Bildet das Verhalten von Google Maps nach:&lt;br /&gt;
Desktop &lt;br /&gt;
* Karte Ignoriert Mausrad&lt;br /&gt;
* User wird Informiert mit ctrl+scrool Karte zoomen&lt;br /&gt;
Mobile&lt;br /&gt;
* Karte ignoriert Ein Finger Drag&lt;br /&gt;
* User wird über 2 Finger Pan informiert&lt;br /&gt;
&lt;br /&gt;
==== In ProcessWire einbauen ====&lt;br /&gt;
* Unterordner &amp;#039;dist&amp;#039; in &amp;#039;Leaflet.GestureHandling&amp;#039; umbenennen und im FieldtypeLeafletMapMarker Modul unter assets ablegen&lt;br /&gt;
*  anpassen des JS für die Frontendausgabe&lt;br /&gt;
 /site/modules/FieldtypeLeafletMapMarker/MarkupLeafletMap.js&lt;br /&gt;
* Init Funktion anpassen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    this.init = function(mapID, lat, lng, provider) {&lt;br /&gt;
        if(lat != 0) this.map = L.map(mapID, {&lt;br /&gt;
          center: [lat, lng],&lt;br /&gt;
          zoom: this.options.zoom,&lt;br /&gt;
          scrollWheelZoom: this.options.scrollWheelZoom,&lt;br /&gt;
          gestureHandling: true&lt;br /&gt;
        } );&lt;br /&gt;
        L.tileLayer.provider(provider).addTo(this.map);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Einbinden von CSS und JS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Extend Leaflet with Gesture Handling --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/Leaflet.GestureHandling/leaflet-gesture-handling.min.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039;.$config-&amp;gt;urls-&amp;gt;siteModules.&amp;#039;FieldtypeLeafletMapMarker/assets/Leaflet.GestureHandling/leaflet-gesture-handling.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;#039;map&amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
	var cities = new L.LayerGroup();&lt;br /&gt;
&lt;br /&gt;
	L.marker([39.61, -105.02]).bindPopup(&amp;#039;This is Littleton, CO.&amp;#039;).addTo(cities),&lt;br /&gt;
	L.marker([39.74, -104.99]).bindPopup(&amp;#039;This is Denver, CO.&amp;#039;).addTo(cities),&lt;br /&gt;
	L.marker([39.73, -104.8]).bindPopup(&amp;#039;This is Aurora, CO.&amp;#039;).addTo(cities),&lt;br /&gt;
	L.marker([39.77, -105.23]).bindPopup(&amp;#039;This is Golden, CO.&amp;#039;).addTo(cities);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	var mbAttr = &amp;#039;Map data &amp;amp;copy; &amp;lt;a href=&amp;quot;http://openstreetmap.org&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt; contributors, &amp;#039; +&lt;br /&gt;
			&amp;#039;&amp;lt;a href=&amp;quot;http://creativecommons.org/licenses/by-sa/2.0/&amp;quot;&amp;gt;CC-BY-SA&amp;lt;/a&amp;gt;, &amp;#039; +&lt;br /&gt;
			&amp;#039;Imagery © &amp;lt;a href=&amp;quot;http://mapbox.com&amp;quot;&amp;gt;Mapbox&amp;lt;/a&amp;gt;&amp;#039;,&lt;br /&gt;
		mbUrl = &amp;#039;https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	var grayscale   = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.light&amp;#039;, attribution: mbAttr}),&lt;br /&gt;
		streets  = L.tileLayer(mbUrl, {id: &amp;#039;mapbox.streets&amp;#039;,   attribution: mbAttr});&lt;br /&gt;
&lt;br /&gt;
	var map = L.map(&amp;#039;map&amp;#039;, {&lt;br /&gt;
		center: [39.73, -104.99],&lt;br /&gt;
		zoom: 10,&lt;br /&gt;
		layers: [grayscale, cities]&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	var baseLayers = {&lt;br /&gt;
		&amp;quot;Grayscale&amp;quot;: grayscale,&lt;br /&gt;
		&amp;quot;Streets&amp;quot;: streets&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var overlays = {&lt;br /&gt;
		&amp;quot;Cities&amp;quot;: cities&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	L.control.layers(baseLayers, overlays).addTo(map);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Popup über URL Parameter öffnen ===&lt;br /&gt;
 https://stackoverflow.com/questions/29004617/open-leaflet-marker-using-url-parameter-not-working-now-that-markercluster-is-us&lt;br /&gt;
&lt;br /&gt;
== Weitere Kartenanbieter ==&lt;br /&gt;
Leaflet Map Marker liefert einige Provider mit. Man kann sie über die  &amp;#039;&amp;#039;&amp;#039;Option provider auswählen&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
 &amp;quot;provider&amp;quot; =&amp;gt; &amp;#039;OpenStreetMap.Mapnik&amp;#039;,&lt;br /&gt;
So lassen sich auch andere Anbieter nutzen:&lt;br /&gt;
 &amp;quot;provider&amp;quot; =&amp;gt; &amp;#039;Stadia.AlidadeSmooth&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
Das JavaScript für die Anbieter liegt in &amp;#039;&amp;#039;&amp;#039;leaflet-providers.js&amp;#039;&amp;#039;&amp;#039;. Dort kann man auch weitere Provider anlegen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// ...&lt;br /&gt;
Stadia: {&lt;br /&gt;
			url: &amp;#039;https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png&amp;#039;,&lt;br /&gt;
			options: {&lt;br /&gt;
				maxZoom: 20,&lt;br /&gt;
				attribution: &amp;#039;&amp;amp;copy; &amp;lt;a href=&amp;quot;https://stadiamaps.com/&amp;quot;&amp;gt;Stadia Maps&amp;lt;/a&amp;gt;, &amp;amp;copy; &amp;lt;a href=&amp;quot;https://openmaptiles.org/&amp;quot;&amp;gt;OpenMapTiles&amp;lt;/a&amp;gt; &amp;amp;copy; &amp;lt;a href=&amp;quot;http://openstreetmap.org&amp;quot;&amp;gt;OpenStreetMap&amp;lt;/a&amp;gt; contributors&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			variants: {&lt;br /&gt;
				AlidadeSmooth: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				AlidadeSmoothDark: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				OSMBright: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				},&lt;br /&gt;
				Outdoors: {&lt;br /&gt;
					url: &amp;#039;https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png&amp;#039;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
// ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customization Examples ==&lt;br /&gt;
=== Marker direkt verlinken (kein PopUp) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var marker = L.marker([52, 12], {});&lt;br /&gt;
marker.url = &amp;#039;www.google.com&amp;#039;&lt;br /&gt;
&lt;br /&gt;
marker.on(&amp;#039;click&amp;#039;, function(){&lt;br /&gt;
window.location = (this.url);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Probleme beheben ==&lt;br /&gt;
=== Feld zeigt an Error Geocoding ===&lt;br /&gt;
File Cache komplett löschen (assets/cache/...)&lt;/div&gt;</summary>
		<author><name>176.2.78.26</name></author>
	</entry>
</feed>