Wikivoyage:Quelltext von gpxmap.php

Aus Wikivoyage
Index > Dokumentation > PHP-Kartentools > Quelltext von gpxmap.php

Im Folgenden findet sich der Quelltext von gpxmap.php vom Nutzer Mey2008 in der Fassung vom 19. Juli 2016.

<!DOCTYPE html>
<html>
<!-- 
Gpxmap:
  Version 2016-07-19
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:
  2016-07-19: New geocoder
  2016-07-13: Wikimedia tiles(Mapquest stop service)
  2015-09-22: new translate for layers
  2014-09-14: tidy and debug script
  2015-08-31: external content warning
  2015-05-22: maptiles.js
  2015-05-20: layer leafletview now wvarticles
  2015-05-19: Localization for layers control
  2015-05-17: Localization reversed for layers (IE incompatible) 
  2015-05-16: buttos-new.js
  2015-05-14: Proper pathname for multipoi2gpx.php
ToDo:
  nothing
-->
<head>
  <title>Wikivoyage - GPX download</title>

  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

  <link rel="icon" href="./lib/images/favicon.png" type="image/png" />
  <link rel="stylesheet" href="./lib/leaflet.css" />
  <link rel="stylesheet" href="./lib/poimap.css" />
  <link rel="stylesheet" href="./lib/PruneCluster.css" />
  <link rel="stylesheet" href="./lib/Control.Geocoder.css" />

  <script type="text/javascript" src="./lib/leaflet.js"></script>
  <script type="text/javascript" src="./lib/leaflet-areaselect.js"></script>
  <script type="text/javascript" src="./lib/serialize.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/PruneCluster.js"></script>
  <script type="text/javascript" src="./lib/Control.Geocoder.js"></script>
  <script type="text/javascript" src="./lib/i18n.js"></script>
  <script type="text/javascript" src="./data/<?php echo $_GET['lang'] ?: 'en'; ?>-articles.js"></script>
  <script type="text/javascript" src="./locale/<?php echo $_GET["lang"] ?: "en"; ?>.js"></script>
  <script type="text/javascript" src="./lib/maptiles.js"></script>
</head>

<body>
  <div id="map">
  <div id="logo">
    <img src="./lib/images/logo.png" alt= "Logo" title= "Version 2016-07-13" width="64" height="64">
  </div>
  
  <script type="text/javascript">
  
  var lang = "<?php echo $_GET['lang'] ?: 'en'; ?>";
  L.registerLocale(lang, mylocale);
  L.setLocale(lang);
  
  maptiles();
  
  function onAll() {
    map.setView([40,10],2);
  }
  
  function onDownload() {
    var bounds = areaSelect.getBounds();
    var swlat = bounds.getSouthWest().lat;
    var nelat = bounds.getNorthEast().lat;
    var swlng = bounds.getSouthWest().lng;
    var nelng = bounds.getNorthEast().lng;
    var a = 0;
    var t = 0; 
    var lat_list = [];
    var lng_list = [];
    var addr_list = [];
    var message = L._("Download this files?") + "\n\n"; 
    for (var i = 0; i < addr_nr; i++) {
      a = addressPoints[i];
      if (a[0] >=  swlat && a[0] <= nelat && a[1] >= swlng && a[1] <= nelng) {
        lat_list[t] = a[0];
        lng_list[t] = a[1];
        addr_list[t] = a[2]; 
        
        t = t + 1;        
      } 
    }
    if (t > 25 ) {
      alert(L._('You have chosen {nn} articles.',{nn:[t]}) + '\n' + L._('But the maximum number for downloading is 25.') + '\n' + L._('Please select a smaller range.'));
    }
    else if (t < 1) {
      alert(L._("No files available for download!"));
    }
    else if (confirm( L._('Download this {nn} GPX files?',{nn:[t]}) + '\n\n' + addr_list.sort().join('\n')) === true) {
      var url_addr = encodeURI(serialize(addr_list));
      window.location.replace('./multipoi2gpx.php?lang=' + lang + '&name=' + url_addr);  
    } 
  }
  
  var addr_nr = (addressPoints.length);
  if (navigator.appVersion.substring(0, 1) == 4){
    addr_nr = addr_nr - 1; // fix for old Explorers
  }
  var lang = "<?php echo ($_GET['lang']) ?: 'it'; ?>";

  var map = L.map('map', {zoomControl: false, minZoom:2, maxZoom: 18}).setView([40,10],2);

// Base layer "Wikimedia" https
  map.addLayer(wikimedia);

// Layer "wvarticles"
  var wvarticles = new PruneClusterForLeaflet(70);
  var a = addressPoints[0];
  
  function mousepopup(marker, data) {
    marker.bindPopup(data.title);
    marker.on('mouseover', function (e) {
      this.openPopup();
    });
  }
  
  for (var i = 0; i < addr_nr; i++) {
    a = addressPoints[i];
    wvarticles.RegisterMarker(new PruneCluster.Marker(a[0], a[1], {title: a[2]}));
    wvarticles.PrepareLeafletMarker = mousepopup;
  }

  map.addLayer(wvarticles);
    
  // Add select area to the map
  var areaSelect = L.areaSelect({width:window.innerWidth / 3, height:window.innerHeight / 3});
  areaSelect.addTo(map);

  // Controls
  
    var basemaps = {
    'Wikimedia': wikimedia
  }; 
  var overlays = {
    'WV_articles': wvarticles
  };

  basemaps[L._("Wikimedia") + ' <img src="./lib/images/wmf-logo-12.png" />'] = basemaps.Wikimedia;
  overlays[L._("WV_articles") + ' <img src="./lib/images/wv-logo-12.png" />'] = overlays.WV_articles;
      
  var maptype = "gpxmap";

  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)" '}) + '"';
  var warning = "";
  document.styleSheets[1].cssRules[4].style.content = warning;
  
  function onZoom(e) {
    if (map.getZoom() > 8) {
      wvarticles.Cluster.Size = 1;
      wvarticles.ProcessView();     
    }
    else {
      wvarticles.Cluster.Size = 70;
      wvarticles.ProcessView();
    }
  } 

  map.on('zoomend', onZoom); 
   
  </script>

</div> <!--map-->
</body>
</html>