Added support for specifying lat, lan and zoom in the wrgmap attributes.
[philipp/winterrodeln/mediawiki_extensions/wrmap.git] / wrmap.body.php
index 8a917a35b3aa5bfede40401891d374102c2b638f..4a0ac323332da668cfb88db17395aefd248cfac1 100644 (file)
@@ -47,21 +47,20 @@ define(WRGMAPJSFUNCTIONS, <<<JAVASCRIPT
 <script type="text/javascript">
 //<![CDATA[
 var wrSleddingIcon = new GIcon(G_DEFAULT_ICON);
-/*
-var wrSleddingIcon = new GIcon();
-wrSleddingIcon.image = "bahn.png";
-wrSleddingIcon.shadow = "bahns.png";
+wrSleddingIcon.image = "/vorlagen/gmap_rodelbahn_c.png";
+wrSleddingIcon.shadow = "/vorlagen/gmap_rodelbahn_c_s.png";
 wrSleddingIcon.iconSize = new GSize(17, 17);
 wrSleddingIcon.shadowSize = new GSize(23, 23);
 wrSleddingIcon.iconAnchor = new GPoint(9, 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;
 }
 //]]>
@@ -88,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);
@@ -110,12 +113,12 @@ class WrGoogleMaps {
                        
                // Create <div/> element where the map is placed in
                $mapName = 'wrgmap' . $this->mapsCount;
-               $output .= '<div id="' . $mapName . '" style="width: 100%; height: 450px; border-style:solid; border-width:medium; border-color:blue;"></div>';
+               $output .= '<div id="' . $mapName . '" style="width: 100%; height: 450px; border-style:none;"></div>';
                
                // 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'];
@@ -128,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";
        }