Wikivoyage: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">✛</font> <br>
<input type="radio" name="group1" value="Mapframe" onClick="choice()"> Mapframe <font color="lime">✛</font> <br>
<br>
<input type="radio" name="group1" value="Maps" onClick="choice()"> Maps <font color="lime">✛</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">✛</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">✛</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 & zoom<br>
■ click & 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('<wpt lat="' + fmlat + '" lon="'+ fmlng + '"><name><i style="background-color:#FFCCCC">description</i></name></wpt>').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>