]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Mapstraction plugin: use minified sources for OpenLayers
authorBrion Vibber <brion@pobox.com>
Wed, 8 Dec 2010 22:54:02 +0000 (14:54 -0800)
committerBrion Vibber <brion@pobox.com>
Wed, 8 Dec 2010 22:54:02 +0000 (14:54 -0800)
The default full build of OpenLayers.js is 943kb as of 2.10; this gzips down to a couple hundred kb
but is still rather nasty, plus loading it off a remote host could slow things down.

Using a local copy let us cut down the size significantly by discarding unused features, and further
minification with yui-compressor shaves a bit more off. Cuts down to about 1/5 the size of the
original.

Also threw in a bundled & minified copy of the Mapstraction classes plus our usermap.js,
which covers the common case of using the default OpenLayers provider. This cuts out three
additional script loads, two of which weren't getting launched until after the mxn.js main
file got loaded.

plugins/Mapstraction/MapstractionPlugin.php

index d5261d8bc7764f833d524462353d0918512f117f..e9e28d78d6c4a7e6df454c28417792513e9a68fc 100644 (file)
@@ -128,8 +128,8 @@ class MapstractionPlugin extends Plugin
             $action->script('http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6');
             break;
         case 'openlayers':
-            // XXX: is this not nice...?
-            $action->script('http://openlayers.org/api/OpenLayers.js');
+            // Use our included stripped & minified OpenLayers.
+            $action->script(common_path('plugins/Mapstraction/OpenLayers/OpenLayers.js'));
             break;
         case 'yahoo':
             $action->script(sprintf('http://api.maps.yahoo.com/ajaxymap?v=3.8&appid=%s',
@@ -140,11 +140,19 @@ class MapstractionPlugin extends Plugin
             return true;
         }
 
-        $action->script(sprintf('%s?(%s)',
-                                common_path('plugins/Mapstraction/js/mxn.js'),
-                                $this->provider));
-
-        $action->script(common_path('plugins/Mapstraction/usermap.js'));
+        if ($this->provider == 'openlayers') {
+            // We have an optimized path for our default case.
+            //
+            // Note that OpenLayers.js needs to be separate, or it won't
+            // be able to find its UI images and styles.
+            $action->script(common_path('plugins/Mapstraction/usermap-mxn-openlayers.min.js'));
+        } else {
+            $action->script(sprintf('%s?(%s)',
+                                    common_path('plugins/Mapstraction/js/mxn.js'),
+                                    $this->provider));
+
+            $action->script(common_path('plugins/Mapstraction/usermap.js'));
+        }
 
         $action->inlineScript(sprintf('var _provider = "%s";', $this->provider));