Index > Dokumentation > PHP-Kartentools > Quelltext von geomap.php


Im Folgenden findet sich der Quelltext von geomap.php vom Nutzer Mey2008 in der Fassung vom 1. Januar 2017.

<!DOCTYPE html> <html> <!--  GeoMap:   Version 2017-01-01 Author:   https://de.wikivoyage.org/wiki/User:Mey2008 Contributors:   no License:    Affero GPL v3 or later http://www.gnu.org/licenses/agpl-3.0.html Recent changes:   2017-01-01: - E-Mail   2016-07-31: Layer=W in Vorlagen, POI nr=||   2016-07-17: New geocoder   2016-07-13: Wikimedia tiles(Mapquest stop service)   2015-11-01: Minimap fixed   2015-09-22: new translate for layers   2015-09-14: tidy and debug script   2015-09-09: external content warning   2015-08-10: url parameter page   2015-08-09: url parameters lang, location + viewbox   2015-05-26: mapmask ToDo:   nothing -->   <head>       <meta charset="utf-8" />     <meta name="viewport" content="width=device-width, initial-scale=1.0" />     <title>Wikivoyage - GeoMap (Copy templates)</title>     <link rel="icon" href="./lib/images/favicon.png" type="image/png" />     <link rel="stylesheet" href="./lib/leaflet.css" />     <link rel="stylesheet" href="./lib/geomap.css" />     <link rel="stylesheet" href="./lib/Control.Geocoder.css" />        </head>   <body>     <div id="wrap">       <div id="left">         <img src="https://upload.wikimedia.org/wikipedia/commons/2/2e/Wikivoyage-Logo-v3-small-en.png"  width="100px" alt="Logo" >         <form action="" name="myform" autocomplete="off">           <b>Copy templates</b>           <hr>           <input type="radio" name="group1" value="Latlong" checked="checked" onClick="choice()"> lat | long <br>           <input type="radio" name="group1" value="Marker" onClick="choice()"> Marker <br>           <input type="radio" name="group1" value="Geo" onClick="choice()"> Geo <font color="lime">&#10011;</font> <br>           <input type="radio" name="group1" value="Mapframe" onClick="choice()"> Mapframe <font color="lime">&#10011;</font> <br>           <br>           <input type="radio" name="group1" value="Maps" onClick="choice()"> Maps <font color="lime">&#10011;</font> <br>           <input type="radio" name="group1" value="Poi" onClick="choice()"> Poi <br>           <input type="radio" name="group1" value="Poimap" onClick="choice()"> PoiMap2 <font color="lime">&#10011;</font> <br>           <input type="radio" name="group1" value="Osmpoi" onClick="choice()"> OsmPoi <br>           <input type="radio" name="group1" value="Geodata" onClick="choice()"> GeoData <font color="lime">&#10011;</font> <br>           <br>           <input type="radio" name="group1" value="Gpxwpt" onClick="choice()"> GpxWpt <br>         </form>       <br>       <b>How it works:</b>       <hr>       ■ select template<br>       ■ search destination<br>       ■ or drag &amp; zoom<br>       ■ click &amp; mark text<br>       ■ copy to clipboard<br>       ■ paste into article<br>       ■ modify <i style='background-color:#FFCCCC'>marked</i> text<br>     </div> <!-- left -->   <div id="map">     <div id="logo">       <img src="./lib/images/logo.png" alt= "Logo" title= "Version 2016-07-31" width="64" height="64">     </div>     <script type="text/javascript" src="./lib/leaflet.js"></script>     <script type="text/javascript" src="./lib/buttons-new.js"></script>     <script type="text/javascript" src="./lib/zoomdisplay.js"></script>     <script type="text/javascript" src="./lib/Control.Geocoder.js"></script>     <script type="text/javascript" src="./lib/Control.MiniMap.js"></script>     <script type="text/javascript" src="./lib/i18n.js"></script>     <script type="text/javascript" src="./locale/<?php echo $_GET['lang'] ?: 'en'; ?>.js"></script>     <script type="text/javascript" src="./lib/maptiles.js"></script>      <noscript>        <h2><a href="http://activatejavascript.org/en/">This application needs JavaScript. - See instructions:</a></h2>     </noscript>      <script>    var lang = "<?php echo $_GET['lang'] ?: 'en'; ?>";   L.registerLocale(lang, mylocale);   L.setLocale(lang);      maptiles();  function choice() {   if (document.myform.group1[2].checked === true || document.myform.group1[3].checked === true || document.myform.group1[4].checked === true || document.myform.group1[6].checked === true || document.myform.group1[8].checked === true ) {     document.getElementById("center").style.opacity = "1";   }   else {     document.getElementById("center").style.opacity = "0";   } }  function onAll() {   map.setView([40,15],2);   return false; }  function onMapClick(e) {   var fmlat=e.latlng.lat.toFixed(map.getZoom() * 0.25 + 0.5);   var fmlng=e.latlng.lng.toFixed(map.getZoom() * 0.25 + 0.5);    if (document.myform.group1[0].checked === true) {     popup.setLatLng(e.latlng).setContent('lat=' + fmlat + ' | long=' + fmlng + '<br><br>' + fmlat + '|' + fmlng + '<br><br>' + fmlat + '<br>' + fmlng).openOn(map);   }   else if (document.myform.group1[1].checked === true) {     popup.setLatLng(e.latlng).setContent("{{Marker|type=<i style='background-color:#FFCCCC'>city</i> |lat=" + fmlat + " |long=" + fmlng + " |zoom=" + map.getZoom() + " |name= |image=}}").openOn(map);   }   else if (document.myform.group1[2].checked === true) {          popup.setLatLng(e.latlng).setContent("{{geo|" + fmlat + "|" + fmlng + "|zoom=" + map.getZoom() + "}}").openOn(map);   }   else if (document.myform.group1[3].checked === true) {     popup.setLatLng(e.latlng).setContent("{{Mapframe|" + fmlat + "|" + fmlng + "|zoom=" + map.getZoom() + "}}").openOn(map);   }   else if (document.myform.group1[4].checked === true) {      popup.setLatLng(e.latlng).setContent("{{Maps|" + fmlat + "|" + fmlng + "|" + map.getZoom() + "<i style='background-color:#FFCCCC'>|W|Stadtplan</i>}}").openOn(map);   }   else if (document.myform.group1[5].checked === true) {     popup.setLatLng(e.latlng).setContent("{{Poi||<i style='background-color:#FFCCCC'>see</i>|" +  fmlat + "|" + fmlng + "|<i style='background-color:#FFCCCC'>name</i>}}<br><br>{{Poi||<i style='background-color:#FFCCCC'>see</i>|" +  fmlat + "|" + fmlng + "|<i style='background-color:#FFCCCC'>name</i>|<i style='background-color:#FFCCCC'>image</i>|<i style='background-color:#FFCCCC'>W</i>}}").openOn(map);   }   else if (document.myform.group1[6].checked === true) {     popup.setLatLng(e.latlng).setContent("[[File:<i style='background-color:#FFCCCC'>Map-icon.svg</i>|thumb|link={{PoiMap2|"  + fmlat + "|" + fmlng + "|" + map.getZoom() + "}}|<i style='background-color:#FFCCCC'>PoiMap</i>]]<br><br>{{PoiMap2|"  + fmlat + "|" + fmlng + "|" + map.getZoom() + "}}").openOn(map);   }   else if (document.myform.group1[7].checked === true) {     popup.setLatLng(e.latlng).setContent("{{OsmPoi|" + fmlat + "|" + fmlng + "|" + map.getZoom() + "|<i style='background-color:#FFCCCC'>W</i>}}").openOn(map);   }   else if (document.myform.group1[8].checked === true) {     popup.setLatLng(e.latlng).setContent("{{GeoData| lat= " + fmlat + "| long= "+ fmlng + "| prec= | radius= | elev= | elevMin= | elevMax= }}").openOn(map);   }   else if (document.myform.group1[9].checked === true) {     popup.setLatLng(e.latlng).setContent('&lt;wpt lat="' + fmlat + '" lon="'+ fmlng + '"&gt;&lt;name&gt<i style="background-color:#FFCCCC">description</i>&lt;/name&gt;&lt;/wpt&gt;').openOn(map);   }   else {     alert ("ERROR GeoMap #206, please report.");   } }  function get_url_param(name) {   name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");   var regexS = "[\\?&]" + name + "=([^&#]*)";   var regex = new RegExp(regexS);   var results = regex.exec(window.location.href);   if (results == null) return "";   else return results[1]; }  function httpGet(theUrl) {     var xmlHttp = new XMLHttpRequest();     xmlHttp.open( "GET", theUrl, false );     xmlHttp.send( null );     result = xmlHttp.responseText;     return result; }  // read URL parameters var ulat = get_url_param('lat'); if (ulat === "") {   ulat = 40; } var ulon = get_url_param('lon'); if (ulon === "") {   ulon = 15; } var uzoom = get_url_param('zoom'); if (uzoom === "") {   uzoom = 2; } var ulayers = get_url_param('layers').toUpperCase(); if (ulayers === "") {   ulayers = "W"; } var ulang = get_url_param('lang').toLowerCase(); if (ulang === "") {   ulang = "en"; } var upage = get_url_param('page'); if (upage === "") {   upage = " "; } var ulocation = decodeURIComponent(get_url_param('location')); if (ulocation === "") {   ulocation = " "; }  var latpos, lonpos = 0; var search, setIcon = " "; if (ulat != 40 && ulocation != " ") {   search = 'http://nominatim.openstreetmap.org/?street=' + ulocation + '&viewbox=' + (+ulon-0.2) + ',' + (+ulat+0.2) + ',' + (+ulon+0.2) + ',' + (+ulat-0.2) + '&bounded=1&format=xml';   httpGet(search);   latpos = result.indexOf("lat=");   lonpos = result.indexOf("lon=");   if (latpos > 0) {     ulat = result.substring(latpos + 5, latpos + 14);     ulon = result.substring(lonpos + 5, lonpos + 14);     uzoom = 17;     setIcon = "yes";   }   else {     alert(ulocation + "\n\nSorry, that location could not be found!");     ulocation = " ";       } } if (upage != " " && ulocation != " ") {   search = 'http://nominatim.openstreetmap.org/?q=' + ulocation + ', ' + upage + '&format=xml';   httpGet(search);   latpos = result.indexOf("lat=");   lonpos = result.indexOf("lon=");   if (latpos > 0) {     ulat = result.substring(latpos + 5, latpos + 14);     ulon = result.substring(lonpos + 5, lonpos + 14);     uzoom = 17;     setIcon = "yes";   }   else {     alert(ulocation + "\n\nSorry, that location could not be found!");     ulocation = " ";       } } if (upage != " " && ulocation == " ") {   search = 'http://nominatim.openstreetmap.org/?q=' + upage + '&format=xml';   httpGet(search);   latpos = result.indexOf("lat=");   lonpos = result.indexOf("lon=");   if (latpos > 0)      {     ulat = result.substring(latpos + 5, latpos + 14);     ulon = result.substring(lonpos + 5, lonpos + 14);     uzoom = 15;     setIcon = "no";   } } if (latpos < 0) {   alert("Sorry, that location could not be found!");   setIcon = "no";   uzoom = 2; }  var map = L.map('map',{zoomControl: false, minZoom:2, maxZoom: 18}).setView([ulat, ulon], uzoom);  // Base layer "Wikimedia (default layer)" https if (ulayers.indexOf('W') != -1) {   map.addLayer(wikimedia); }      // Basislayer "mapnik " http & https if (ulayers.indexOf('M') != -1) {   map.addLayer(mapnik); }      // Layer "Boundaries (default layer)" http if (ulayers.indexOf('B') != -1) {   map.addLayer(boundaries); }   // Layer "Cycling" http if (ulayers.indexOf('C') != -1) {   map.addLayer(cycling); }  // Mini map, layer "Wikimedia" https    tilesUrl = 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';   tilesAttrib = L._("Map data") + ' © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> ' + L._("contributors, Tiles") + ' © <a href="https://wikimediafoundation.org/wiki/Home">Wikimedia</a>';   var wmmini = new L.TileLayer(tilesUrl, {attribution: tilesAttrib});   var miniMap = new L.Control.MiniMap(wmmini, { toggleDisplay: true,	width: 250 }).addTo(map);  // target if (setIcon == "yes") {   var redIcon = L.icon({iconUrl: './ico24/target.png', iconSize: [32,32], iconAnchor: [16,16]});   L.marker([ulat, ulon],{icon: redIcon}).addTo(map); } // MapMask  var mask =  [[90, -180],[90, 180],[-90, 180],[-90, -180]]; var mcolor = "black", mweight = 0, mopacity = 0, mfillOpacity = 0.2; if (L.Browser.android) { var mcolor = "blue", mweight = 5, mopacity = 0.2, mfillOpacity = 0; } var mapmask = L.polygon(   [[[90, -540],[90,540],[-90, 540],[-90, -540]],mask], // world, mask   {color: mcolor, weight: mweight, opacity: mopacity, fillOpacity: mfillOpacity, clickable: false} ).addTo(map);   // Controls  var basemaps = {   'Wikimedia': wikimedia,   'Mapnik': mapnik };  var overlays = {   'Boundaries': boundaries,   'Cycling': cycling };  basemaps[L._("Wikimedia") + ' <img src="./lib/images/wmf-logo-12.png" />'] = basemaps.Wikimedia; basemaps[L._('Mapnik') + ' <img src="./lib/images/external.png" />'] = basemaps.Mapnik;  overlays[L._("Boundaries") + ' <img src="./lib/images/external.png" />'] = overlays.Boundaries; overlays[L._("Cycling") + ' <img src="./lib/images/external.png" />'] = overlays.Cycling;      var maptype = "geomap";  map.addControl(new L.Control.Geocoder({placeholder: L._("Locate!")})); map.addControl(new L.Control.Layers(basemaps, overlays)); map.addControl(new L.Control.Scale()); map.addControl(new L.Control.Buttons());  // External content warning var imgpath = "../lib/images/";  if (L.Browser.ie) {   imgpath = "./lib/images/"; } var warning = 'url(' + imgpath + 'line.png) "' + L._('Content with {external} is hosted externally, so enabling it shares your data with other sites.',{external:' "url(' + imgpath + 'external.png)" '}) + '"'; document.styleSheets[1].cssRules[4].style.content = warning;  // Pop-up coordinates var popup = L.popup({maxWidth: 800});  map.on('click', onMapClick);  </script>          <div id="center">             <img src="./lib/images/center.png">          </div>       </div> <!-- map -->     </div> <!-- wrap -->   </body> </html>