</p>
<p><div class="leaflet-map WPLeafletMap" style="height:500px; width:100%;"></div><script>
window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || [];
window.WPLeafletMapPlugin.push(function WPLeafletMapShortcode() {/*<script>*/
var baseUrl = atob('aHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmc=');
var base = (!baseUrl && window.MQ) ? 
    window.MQ.mapLayer() : L.tileLayer(baseUrl, 
        L.Util.extend({}, {
            detectRetina: 0,
        }, 
        {"subdomains":"abc","noWrap":false}        )
    );
    var options = L.Util.extend({}, {
        layers: [base],
        attributionControl: false
    }, 
    {"zoomControl":false,"scrollWheelZoom":false,"doubleClickZoom":false,"fitBounds":false,"minZoom":0,"maxZoom":19,"maxBounds":null,"attribution":"<a href=\"http:\/\/leafletjs.com\" title=\"Eine Javascript-Bibliothek f\u00fcr interaktive Karten\">Leaflet<\/a>; \u00a9 <a href=\"http:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a> Mitwirkende"}, 
    {});
window.WPLeafletMapPlugin.createMap(options).setView([49.403076,11.064891],14);});</script><br />
<script>
window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || [];
window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*<script>*/
var map = window.WPLeafletMapPlugin.getCurrentMap();
var group = window.WPLeafletMapPlugin.getCurrentGroup();
var marker_options = window.WPLeafletMapPlugin.getIconOptions({});
var marker = L.marker(
    [49.403076,11.064891], 
    marker_options
);
var is_image = map.is_image_map;
if (marker_options.draggable) {
    marker.on('dragend', function () {
        var latlng = this.getLatLng();
        var lat = latlng.lat;
        var lng = latlng.lng;
        if (is_image) {
            console.log('leaflet-marker y=' + lat + ' x=' + lng);
        } else {
            console.log('leaflet-marker lat=' + lat + ' lng=' + lng);
        }
    });
}
marker.addTo( group );
marker.bindPopup(window.WPLeafletMapPlugin.unescape('&lt;br /&gt;&lt;br&gt;&lt;strong&gt;MTP Messtechnik Produktions GmbH&lt;/strong&gt;&lt;br /&gt;&lt;br&gt;Bremer Str. 11&lt;br /&gt;&lt;br&gt;90451 Nürnberg&lt;br /&gt;&lt;br&gt;&lt;a href=\&quot;https://www.google.com/maps/dir//Bremer+Str.+11,+90451+N%C3%BCrnberg/@49.4031457,11.0626769,17z/data=!4m8!4m7!1m0!1m5!1m1!1s0x479f50cce9c31c25:0xebba70cc5cf0d2b9!2m2!1d11.0648656!2d49.4031457\&quot; target=\&quot;_blank\&quot; rel=\&quot;noopener\&quot;&gt;Route berechnen&lt;/a&gt;&lt;/p&gt;&lt;br&gt;&lt;p&gt;'));window.WPLeafletMapPlugin.markers.push( marker );
        });</script></p>
<p>