Added support for specifying lat, lan and zoom in the wrgmap attributes.
authorphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Sun, 21 Dec 2008 13:38:24 +0000 (13:38 +0000)
committerphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Sun, 21 Dec 2008 13:38:24 +0000 (13:38 +0000)
git-svn-id: http://www.winterrodeln.org/svn/servermediawiki/trunk/extensions/wrmap@360 7aebc617-e5e2-0310-91dc-80fb5f6d2477

wrmap.body.php

index 05e0b1196d83118ef86ef999da55d9d5bc6564ac..4a0ac323332da668cfb88db17395aefd248cfac1 100644 (file)
@@ -58,7 +58,9 @@ wrSleddingIcon.infoWindowAnchor = new GPoint(9, 9);
 function wrCreateMarker(latitude, longitude, name, icon) {
        var point = new GLatLng(latitude, longitude);
        var marker = new GMarker(point, icon);
-       GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml("<strong>" + name + "</strong>");});
+       var articlePath = "$wgArticlePath";
+       var p = articlePath.replace("\$1", name.replace(' ', '_'));
+       GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml("<strong><a href='" + p + "'>" + name+ "</a></strong>");});
        return marker;
 }
 //]]>
@@ -85,11 +87,15 @@ class WrGoogleMaps {
        /// @param $content string - the content of the <wrgmap> tag
        /// @param $args array - the array of attribute name/value pairs for the tag
        /// @param $parser Parser - the MW Parser object for the current page
-       /// @param $localParser Parser - the parser for parsing local content
        ///
        /// @return string - the html for rendering the map
        function render($content, $args, &$parser) {
                ++$this->mapsCount;
+               
+               // Decode data
+               if (isset($args['lat'])) $latitude = floatval($args['lat']); else $latitude = 47.267648;
+               if (isset($args['lon'])) $longitude = floatval($args['lon']); else $longitude = 11.404655;
+               if (isset($args['zoom'])) $zoom = intval($args['zoom']); else $zoom = 10; // Google Zoom Level
 
                // Query database
                $dbr = wfGetDB(DB_SLAVE);
@@ -112,7 +118,7 @@ class WrGoogleMaps {
                // Return output
                $output .= '<script type="text/javascript">' . "\n//<![CDATA[\n";
                $output .= 'if (GBrowserIsCompatible()) {' . "\n";
-               $output .= $this->addMap($mapName);
+               $output .= $this->addMap($mapName, $latitude, $longitude, $zoom);
                foreach ($sleddingRoutes as $s) {
                        $lat = $s['position_latitude'];
                        $lon = $s['position_longitude'];
@@ -125,12 +131,12 @@ class WrGoogleMaps {
        }
        
        // returns a string that creates a map object called 'map'
-       private function addMap($mapName) {
+       private function addMap($mapName, $latitude, $longitude, $zoom) {
                return "\tvar map = new GMap2(document.getElementById('$mapName'), {'mapTypes': [G_NORMAL_MAP, G_HYBRID_MAP, G_PHYSICAL_MAP, G_SATELLITE_MAP]});\n" .
                "\tmap.addControl(new GLargeMapControl());\n" .
                "\tmap.addControl(new GMapTypeControl());\n" .
                "\tmap.addControl(new GScaleControl());\n" .
-               "\tmap.setCenter(new GLatLng(47.267648, 11.404655), 10);\n" .
+               "\tmap.setCenter(new GLatLng($latitude, $longitude), $zoom);\n" .
                "\tmap.setMapType(G_PHYSICAL_MAP);\n" .
                "\tmap.enableScrollWheelZoom();\n";
        }