wrmap calculates the map center by itself now and has a debug mode
authorphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Fri, 12 Dec 2008 19:58:48 +0000 (19:58 +0000)
committerphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Fri, 12 Dec 2008 19:58:48 +0000 (19:58 +0000)
git-svn-id: http://www.winterrodeln.org/svn/servermediawiki/trunk/extensions/wrmap@343 7aebc617-e5e2-0310-91dc-80fb5f6d2477

wrmap.body.php

index f864714ca72d6d1a029534c46e20e135ed544206..da1a7f074744899d8ec21278a8fbf2b1d505008d 100644 (file)
@@ -23,8 +23,12 @@ function wrMapParserFirstCallInit() {
 /// Die Naviser Hütte
 /// </googlemap>
 function wrmapParserHook($input, $args, $parser) {
-       $output = '<googlemap version="0.9" lat="47.452237" lon="11.208801" type="terrain" zoom="9">'; // TODO: Varable coordinates
+       $debug = (isset($args['debug']));
+
+       $output = '';
        $lines = explode("\n", $input);
+       $latitudes = array();
+       $longitudes = array();
        foreach ($lines as $line) {
                try {
                        $l = trim($line);
@@ -33,12 +37,24 @@ function wrmapParserHook($input, $args, $parser) {
                        if (count($columns) != 3) throw new Exception(sprintf(utf8_encode('Die Anzahl der Spalten ist nicht 3 sondern %d'), count($columns)));
                        $columns = list($type, $geo, $name) = $columns;
                        list($latitude, $longitude) = wrGeoStringToGeo($geo);
+                       $latitudes[] = $latitude;
+                       $longitudes[] = $longitude;
                        $output .= sprintf("%F, %F, %s\n", $latitude, $longitude, htmlspecialchars($name));
                } catch (Exception $e) {
                        return sprintf(utf8_encode('Ungültige Zeile in der Koordinatenliste: <em>%s</em>. %s'), htmlspecialchars($line), htmlspecialchars($e->getMessage()));
                }
        }
-       $output = $output .= "</googlemap>\n";
+       if (count($latitudes) == 0) return utf8_encode('Keine Koordinaten eingetragen');
+       $minLatitude = min($latitudes);
+       $centerLat = $minLatitude + (max($latitudes) - $minLatitude) / 2;
+       $minLongitude = min($longitudes);
+       $centerLon = $minLongitude + (max($longitudes) - $minLongitude) / 2;
+
+       // TODO: Varable zoom level
+       $output = '<googlemap version="0.9" lat="' . $centerLat . '" lon="' . $centerLon . '" type="terrain" zoom="9">'. "\n" . $output . "</googlemap>\n";
+
+       if ($debug) return $output = "<pre><nowiki>$output</nowiki></pre>";
+
        /*
        global $wgTitle, $wgUser; 
        $parser = new Parser();
@@ -47,8 +63,10 @@ function wrmapParserHook($input, $args, $parser) {
        $result = $parser->parse($output, $wgTitle, $parserOptions); // TODO: Make this call less complicated
        return $result->getText();
        */
-       $result = $parser->recursiveTagParse($output); // TODO: Maybe this is already the solution?
-       return $result;
+       
+       $output = $parser->recursiveTagParse($output); // TODO: Maybe this is already the solution?
+
+       return $output;
 }