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


Im Folgenden findet sich der Quelltext von poi2gpx.php vom Nutzer Mey2008 in der Fassung vom 09. August 2017.

<?php  /*   poi2gpx - Version 2015-05-13    Author:   https://de.wikivoyage.org/wiki/User:Mey2008    Contributors:   https://it.wikivoyage.org/wiki/Utente:Andyrom75    License:   Affero GPL v3 or later http://www.gnu.org/licenses/agpl-3.0.html     Recent changes:   2017-08-09: adding description   2015-05-13: character & masked as &amp; - application/gpx+xml   2015-04-27: default color; read monument articls   2015-04-18: Read Template:GPX/ for ru   2015-04-17: Convert special characters in file name to "_"   2015-04-16: Special characters ' " & now allowed in POI names   2015-04-02: Better regex to filter header of gpx track   2015-04-01: New color for drink, filename, type + nummer + name   2015-03-21: All marker colors equal https://en.wikivoyage.org/wiki/Template:TypeToColor    ToDo:   --- */  //PHP error reporting  *** TEST *** error_reporting (E_ALL | E_STRICT); ini_set ('display_errors' , 1);  include('./readpage.php');  // echo '<pre>'; print_r($GLOBALS); echo '</pre>'; // *** TEST ***  // POI'S to GPX  $file_out = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> '; $file_out .= '<gpx version="1.1" creator="Wikivoyage"    xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"> '; for($i=1; $i <= $max; $i++) {   if ($p[$i] != 0) {     $lat = number_format($x[$i], 4);     $lon = number_format($y[$i], 4);     $number = str_pad($p[$i], 2 ,'0', STR_PAD_LEFT);     $name = str_replace(array('"', "'", "<", ">", "&", "[["), array("&quot;", "&apos;", "&lt;", "&gt;", "&amp;", ""), $n[$i]);      $cat = $c[$i];     $desc = $d[$i];     $color = str_ireplace(array('see', 'do', 'buy', 'eat', 'drink', 'sleep', 'other', 'city', 'go', 'view', 'vicinity', 'gold', 'lime', 'red', 'silver'), array('#4682b4', '#808080', '#008080', '#d2691e', '#810061', '#000080', '#228b22', '#0000ff', '#a52a2a', '#416941', '#800000', '#ffd700', '#00ff00', '#ff0000', '#c0c0c0'), $cat);     if ($color == $cat) {       $color = "ffd700";       $line = '  <wpt lat="' . $lat . '" lon="' . $lon . '">     <name>' . $name . '</name>     <type>' . $cat . '</type>     <extensions>        <color>' . $color . '</color>     </extensions>     <desc>' . $desc . '</desc>   </wpt> ';     }   else {       $line = '  <wpt lat="' . $lat . '" lon="' . $lon . '">     <name>[' .  ucfirst($cat) . ' ' . $number . '] ' . $name . '</name>     <type>' . $cat . '</type>     <extensions>        <color>' . $color . '</color>     </extensions>     <desc>' . $desc . '</desc>   </wpt> ';   }     $file_out .= $line;   } }  // read gpx  $gpxcontent = ""; if ($lang == 'el' || $lang == 'en' || $lang == 'fr' || $lang == 'it' || $lang == 'nl' || $lang == 'ru') {   // Gpx data --> Template:GPX/Articlename   $gpxcontent = @file_get_contents("https://" . $lang . ".wikivoyage.org/w/index.php?title=Template:GPX/" . $file . "&action=raw"); } else {   // Gpx data --> Articlename/Gpx   $gpxcontent = @file_get_contents("https://" . $lang . ".wikivoyage.org/w/index.php?title=" . $file . "/Gpx&action=raw"); } if (!$gpxcontent) {   $gpxcontent = "</gpx>"; } $gpxcontent = str_replace("\n", "\r\n", $gpxcontent); $gpxcontent = preg_replace("/(.*)?<trk>/s", "  <trk>", $gpxcontent);  $file_out = $file_out . $gpxcontent; $out = strlen($file_out);  if ($out > 350) {   $filename = str_replace(array(":", "/"), "_", $file) . "_" . $lang . ".gpx";   if (isset($file_out)) {     header("Content-Length: $out");     header("Content-Type: application/gpx+xml");     header("Content-Disposition: attachment; filename=$filename");     header("Content-Transfer-Encoding: binary");     echo $file_out;     exit;   } } else {   $file_out = "No geocoded POI's in this WV acticle.";   $out = strlen($file_out);   $filename = str_replace(array(":", "/"), "_", $file) . "_" . $lang . "_--_ERROR_--_NO_GEOCODED_POI.txt";   if (isset($file_out)) {     header("Content-Length: $out");     header("Content-Type: application/gpx+xml");     header("Content-Disposition: attachment; filename=$filename");     header("Content-Transfer-Encoding: binary");     echo $file_out;     exit;   } } ?>