]> dev.renevier.net Git - syj.git/commitdiff
add mapquest layer
authorarno <arno@renevier.net>
Thu, 14 Apr 2011 07:42:52 +0000 (09:42 +0200)
committerarno <arno@renevier.net>
Thu, 14 Apr 2011 07:42:52 +0000 (09:42 +0200)
16 files changed:
.gitmodules
COPYING.TXT
application/configs/medias.ini
application/controllers/IdxController.php
application/languages/lang_en.po
application/languages/lang_fr.po
application/languages/lang_ja.po
public/css/syj.css
public/css/syjprint.css
public/icons/layer-switcher-maximize-flipped.png [new file with mode: 0644]
public/js/store.js [new symlink]
public/js/syj.js
public/js/syjraw.js
public/store.js [new submodule]
scripts/fulljslint.js
scripts/syj.cfg

index 26fad1a685f84636f93f2fefd9e927bc4a2eb452..0bbb5056726fb13aa0dd152b8739ccacf9a064c6 100644 (file)
@@ -10,3 +10,6 @@
 [submodule "public/simplebox"]
        path = public/simplebox
        url = git://github.com/arenevier/simplebox.git
+[submodule "public/store.js"]
+       path = public/store.js
+       url = git://github.com/cloudhead/store.js.git
index 6128571b20ed87fea9f28e297f860739e3fb13f1..e83ada25b113cb7d2f289d4ffadf69331386d353 100644 (file)
@@ -10,6 +10,9 @@
 - pseudo.gif files has been generated with http://ajaxload.info/ generator and
   is free for use.
 
+- layer-switcher-maximize-flipped.png is a flipped version of
+  layer-switcher-maximize.png from OpenLayers. As such it is licensed under a
+  modified BSD license.
 
 
 ===============================================================================
index 7826dc7515fca2d1391aca7c805edc4b20a4d842..53c54890909fd15db6f9c56ca57da13bac5816e1 100644 (file)
@@ -1,7 +1,7 @@
 ; This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
 ; and is published under the AGPL license. */
 [production]
-scripts.idx = OpenLayers, ModifiablePath, prototype, simplebox, utils, syj
+scripts.idx = OpenLayers, ModifiablePath, prototype, simplebox, utils, syj, store
 scripts.rawidx = OpenLayers, syjraw
 scripts.login = prototype, utils, login
 scripts.contact = prototype, utils, contact
index 16ff68f0a0061c09ec6feb2ff30c2ac36d3864e4..d0fa248f7c3bb4d8deb7f7ed2b521912aca29d2c 100644 (file)
@@ -149,6 +149,7 @@ class IdxController extends Zend_Controller_Action
     protected function _jsRawLocaleStrings() {
         $this->view->jslocales = array(
             'osmAttribution' => __("Map by <a href='http://openstreetmap.org/'>OpenStreetMap</a>"),
+            'mapquestAttribution' => __("Map by MapQuest, <a href='http://www.openstreetmap.org/'>OpenStreetMap</a> and contributors, <a href='http://creativecommons.org/licenses/by-sa/2.0/'>CC-BY-SA</a>"),
             );
     }
 
@@ -174,6 +175,7 @@ class IdxController extends Zend_Controller_Action
             'canResubmit' => __("Now, you can retry to save"),
             'routeBy' => __("route by"),
             'osmAttribution' => __("Map by <a href='http://openstreetmap.org/'>OpenStreetMap</a>"),
+            'mapquestAttribution' => __("Map by MapQuest, <a href='http://www.openstreetmap.org/'>OpenStreetMap</a> and contributors, <a href='http://creativecommons.org/licenses/by-sa/2.0/'>CC-BY-SA</a>"),
             'pseudoChecking' => __("checking availibilty"),
             'availablePseudo' => __("available pseudo"),
             'unavailablePseudo' => __("unavailable pseudo"),
index 335ce2bf2bd744c19187c449442671c383176098..defca4451090e5b6caf64cd4615e2744a4419018 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: syj\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-04 13:05+0200\n"
+"POT-Creation-Date: 2011-04-12 23:13+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: arno <arno@renevier.net>\n"
 "Language-Team: arno <arno@renevier.net>\n"
@@ -106,12 +106,12 @@ msgid "gpx export"
 msgstr "gpx export"
 
 #: application/views/scripts/idx/index.phtml:112
-#: application/controllers/IdxController.php:182
+#: application/controllers/IdxController.php:183
 msgid "duplicate"
 msgstr "duplicate"
 
 #: application/views/scripts/idx/index.phtml:114
-#: application/controllers/IdxController.php:180
+#: application/controllers/IdxController.php:181
 msgid "edit"
 msgstr "edit"
 
@@ -476,7 +476,7 @@ msgstr "Hi,"
 #: application/controllers/ContactController.php:121
 #: application/controllers/NewpwdController.php:68
 #: application/controllers/AccountController.php:70
-#: application/controllers/IdxController.php:184
+#: application/controllers/IdxController.php:185
 msgid "Value is required"
 msgstr "Value is required"
 
@@ -640,30 +640,34 @@ msgid "route by"
 msgstr "route by"
 
 #: application/controllers/IdxController.php:177
+msgid "Map by MapQuest, <a href='http://www.openstreetmap.org/'>OpenStreetMap</a> and contributors, <a href='http://creativecommons.org/licenses/by-sa/2.0/'>CC-BY-SA</a>"
+msgstr "Map by MapQuest, <a href='http://www.openstreetmap.org/'>OpenStreetMap</a> and contributors, <a href='http://creativecommons.org/licenses/by-sa/2.0/'>CC-BY-SA</a>"
+
+#: application/controllers/IdxController.php:178
 msgid "checking availibilty"
 msgstr "checking availibilty"
 
-#: application/controllers/IdxController.php:178
+#: application/controllers/IdxController.php:179
 msgid "available pseudo"
 msgstr "available pseudo"
 
-#: application/controllers/IdxController.php:179
+#: application/controllers/IdxController.php:180
 msgid "unavailable pseudo"
 msgstr "unavailable pseudo"
 
-#: application/controllers/IdxController.php:181
+#: application/controllers/IdxController.php:182
 msgid "create"
 msgstr "create"
 
-#: application/controllers/IdxController.php:183
+#: application/controllers/IdxController.php:184
 msgid "You have an unsaved route"
 msgstr "You have an unsaved route"
 
-#: application/controllers/IdxController.php:185
+#: application/controllers/IdxController.php:186
 msgid "no result"
 msgstr "no result"
 
-#: application/controllers/IdxController.php:186
+#: application/controllers/IdxController.php:187
 msgid "could not analyze file content"
 msgstr "could not analyze file content"
 
index 6efd1a2933cb2c5320b8b00300d33b0659a2d400..cc1824040f697fba0f52a4b95ed8479726648a8e 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: syj\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-04 13:05+0200\n"
+"POT-Creation-Date: 2011-04-12 23:13+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: arno <arno@renevier.net>\n"
 "Language-Team: arno <arno@renevier.net>\n"
@@ -106,12 +106,12 @@ msgid "gpx export"
 msgstr "export gpx"
 
 #: application/views/scripts/idx/index.phtml:112
-#: application/controllers/IdxController.php:182
+#: application/controllers/IdxController.php:183
 msgid "duplicate"
 msgstr "dupliquer"
 
 #: application/views/scripts/idx/index.phtml:114
-#: application/controllers/IdxController.php:180
+#: application/controllers/IdxController.php:181
 msgid "edit"
 msgstr "modifier"
 
@@ -478,7 +478,7 @@ msgstr "Bonjour,"
 #: application/controllers/ContactController.php:121
 #: application/controllers/NewpwdController.php:68
 #: application/controllers/AccountController.php:70
-#: application/controllers/IdxController.php:184
+#: application/controllers/IdxController.php:185
 msgid "Value is required"
 msgstr "Le champ est requis"
 
@@ -642,30 +642,34 @@ msgid "route by"
 msgstr "tracé par"
 
 #: application/controllers/IdxController.php:177
+msgid "Map by MapQuest, <a href='http://www.openstreetmap.org/'>OpenStreetMap</a> and contributors, <a href='http://creativecommons.org/licenses/by-sa/2.0/'>CC-BY-SA</a>"
+msgstr "Carte par MapQuest, <a href='http://www.openstreetmap.org/'>OpenStreetMap</a> et contributeurs, <a href='http://creativecommons.org/licenses/by-sa/2.0/'>CC-BY-SA</a>"
+
+#: application/controllers/IdxController.php:178
 msgid "checking availibilty"
 msgstr "vérification de la disponibilité"
 
-#: application/controllers/IdxController.php:178
+#: application/controllers/IdxController.php:179
 msgid "available pseudo"
 msgstr "pseudo disponible"
 
-#: application/controllers/IdxController.php:179
+#: application/controllers/IdxController.php:180
 msgid "unavailable pseudo"
 msgstr "pseudo non disponible"
 
-#: application/controllers/IdxController.php:181
+#: application/controllers/IdxController.php:182
 msgid "create"
 msgstr "créér"
 
-#: application/controllers/IdxController.php:183
+#: application/controllers/IdxController.php:184
 msgid "You have an unsaved route"
 msgstr "Vous avez un itinéraire non sauvegardé"
 
-#: application/controllers/IdxController.php:185
+#: application/controllers/IdxController.php:186
 msgid "no result"
 msgstr "pas de résultat"
 
-#: application/controllers/IdxController.php:186
+#: application/controllers/IdxController.php:187
 msgid "could not analyze file content"
 msgstr "impossible d'analyser le contenu du fichier"
 
index 37704d480fa910d3c5d4e215b946f6890222ff0d..00c952ed344c913f9efdf66f2cf67a2e04f2a793 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: syj\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-04 13:05+0200\n"
+"POT-Creation-Date: 2011-04-12 23:13+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: S.Higashi <s_higash@mua.biglobe.ne.jp>\n"
 "Language: \n"
@@ -110,12 +110,12 @@ msgid "gpx export"
 msgstr "gpxにエクスポート"
 
 #: application/views/scripts/idx/index.phtml:112
-#: application/controllers/IdxController.php:182
+#: application/controllers/IdxController.php:183
 msgid "duplicate"
 msgstr "複製"
 
 #: application/views/scripts/idx/index.phtml:114
-#: application/controllers/IdxController.php:180
+#: application/controllers/IdxController.php:181
 msgid "edit"
 msgstr "編集"
 
@@ -572,7 +572,7 @@ msgstr "Hi,"
 #: application/controllers/ContactController.php:121
 #: application/controllers/NewpwdController.php:68
 #: application/controllers/AccountController.php:70
-#: application/controllers/IdxController.php:184
+#: application/controllers/IdxController.php:185
 msgid "Value is required"
 msgstr "値が必要です"
 
@@ -736,30 +736,37 @@ msgid "route by"
 msgstr "ルート作成者"
 
 #: application/controllers/IdxController.php:177
+msgid ""
+"Map by MapQuest, <a href='http://www.openstreetmap.org/'>OpenStreetMap</a> "
+"and contributors, <a href='http://creativecommons.org/licenses/by-"
+"sa/2.0/'>CC-BY-SA</a>"
+msgstr ""
+
+#: application/controllers/IdxController.php:178
 msgid "checking availibilty"
 msgstr "利用可能かチェック中"
 
-#: application/controllers/IdxController.php:178
+#: application/controllers/IdxController.php:179
 msgid "available pseudo"
 msgstr "利用出来るID"
 
-#: application/controllers/IdxController.php:179
+#: application/controllers/IdxController.php:180
 msgid "unavailable pseudo"
 msgstr "利用できないID"
 
-#: application/controllers/IdxController.php:181
+#: application/controllers/IdxController.php:182
 msgid "create"
 msgstr "作成"
 
-#: application/controllers/IdxController.php:183
+#: application/controllers/IdxController.php:184
 msgid "You have an unsaved route"
 msgstr "保存されていないルートがあります"
 
-#: application/controllers/IdxController.php:185
+#: application/controllers/IdxController.php:186
 msgid "no result"
 msgstr "結果がありません"
 
-#: application/controllers/IdxController.php:186
+#: application/controllers/IdxController.php:187
 msgid "could not analyze file content"
 msgstr "ファイル内容を分析できませんでした"
 
index b5151ae42799231bec92545d07e4e1f9c6bfbdfb..ae8e1b67524107fde25b611e2ce6693c05a8f2ee 100644 (file)
@@ -29,6 +29,37 @@ body, html {
     left: 0.5em;
 }
 
+.olControlLayerSwitcher {
+    bottom: 4em;
+    top: auto;
+    left: 13px;
+    opacity: 0.75;
+    height: 6em;
+    max-width: intrinsic;
+    max-width: -moz-max-content;
+}
+
+/* setting opacity to .olControlLayerSwitcher does not work */
+.olControlLayerSwitcher .layersDiv,
+.olControlLayerSwitcher .maximizeDiv,
+.olControlLayerSwitcher .minimizeDiv
+{
+    filter:alpha(opacity=75);
+}
+
+.olControlLayerSwitcher .dataLayersDiv, .olControlLayerSwitcher .dataLbl {
+    display: none;
+}
+.olControlLayerSwitcher .layersDiv {
+    padding: 5px 12px 5px 36px;
+}
+.olControlLayerSwitcher .maximizeDiv {
+    top: -6em;
+}
+.olControlLayerSwitcher .minimizeDiv {
+    left: 4px;
+}
+
 /*
  * main message rules
  */
index 305b06d64ab209a33bc1b5cf891b282c6db147cc..89b90fa482089e4644811c4b180e8748edda5f70 100644 (file)
@@ -1,7 +1,7 @@
 /*  This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
     and is published under the AGPL license. */
 
-.olControlPanZoom, .olControlAttribution {
+.olControlPanZoom, .olControlAttribution, .olControlLayerSwitcher {
     display: none;
 }
 #message, #other-language, #menu, #user_area, #login_area, #newpwd_area, #termsofusearea, #footer, #map-overlay {
diff --git a/public/icons/layer-switcher-maximize-flipped.png b/public/icons/layer-switcher-maximize-flipped.png
new file mode 100644 (file)
index 0000000..f87fa32
Binary files /dev/null and b/public/icons/layer-switcher-maximize-flipped.png differ
diff --git a/public/js/store.js b/public/js/store.js
new file mode 120000 (symlink)
index 0000000..bc23b5e
--- /dev/null
@@ -0,0 +1 @@
+../store.js/store.js
\ No newline at end of file
index 85db31ac775e901508f4b65116bf498449d94fcb..02336343d9d781d8f6bacb808b4855ea8180b413 100644 (file)
@@ -272,7 +272,7 @@ var SYJView = {
     mode: 'view',
 
     init: function() {
-        var externalGraphic, baseURL, baseLayer, layerOptions, hidemessenger;
+        var externalGraphic, baseURL, osmLayer, layerOptions, hidemessenger, layerCode, parameters;
 
         // is svg context, opera does not resolve links with base element is svg context
         externalGraphic = styleMap.edit.styles.select.defaultStyle.externalGraphic;
@@ -283,16 +283,24 @@ var SYJView = {
             controls: [
                 new OpenLayers.Control.Navigation(),
                 new OpenLayers.Control.PanZoom(),
+                this.createLayerSwitcher(),
                 new OpenLayers.Control.Attribution()
             ],
             theme: null
         });
 
-        baseLayer = new OpenLayers.Layer.OSM("OSM", [
+        osmLayer = new OpenLayers.Layer.OSM("OSM", [
                 'http://a.tile.openstreetmap.org/${z}/${x}/${y}.png',
                 'http://b.tile.openstreetmap.org/${z}/${x}/${y}.png',
                 'http://c.tile.openstreetmap.org/${z}/${x}/${y}.png'],
-                { wrapDateLine: true , attribution: SyjStrings.osmAttribution });
+                { wrapDateLine: true , attribution: SyjStrings.osmAttribution, layerCode: 'O'});
+
+        mapquestLayer = new OpenLayers.Layer.OSM("Mapquest", [
+            'http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png',
+            'http://otile2.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png',
+            'http://otile3.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png',
+            'http://otile4.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png'],
+                { wrapDateLine: true , attribution: SyjStrings.mapquestAttribution, layerCode: 'M'});
 
         layerOptions = {format:     OpenLayers.Format.WKT,
                         projection: WGS84,
@@ -300,7 +308,34 @@ var SYJView = {
                         attribution: SyjStrings.geomAttribution };
 
         this.viewLayer = new OpenLayers.Layer.Vector("View Layer", layerOptions);
-        this.map.addLayers([baseLayer, this.viewLayer]);
+        this.map.addLayers([osmLayer, mapquestLayer, this.viewLayer]);
+
+        this.map.setBaseLayer(mapquestLayer);
+        layerCode = null;
+        parameters = OpenLayers.Util.getParameters(window.location.href);
+        if (parameters.layer) {
+            layerCode = parameters.layer;
+            try {
+                store.remove('baselayer');
+            } catch(e) {}
+        } else {
+            try {
+                layerCode = store.get('baselayer');
+            } catch(e) {}
+        }
+
+        if (layerCode) {
+            layerCode = layerCode.toUpperCase();
+            var self = this;
+            $([osmLayer, mapquestLayer]).each(function(layer) {
+                if (layer.layerCode === layerCode) {
+                    self.map.setBaseLayer(layer);
+                }
+            });
+        }
+
+
+        this.map.events.register("changebaselayer", this, this.saveBaseLayer);
 
         if ($("edit-btn")) {
             $("edit-btn").observe('click', function() {
@@ -431,6 +466,33 @@ var SYJView = {
         SYJPathLength.update();
     },
 
+    saveBaseLayer: function(data) {
+        try {
+            store.set('baselayer', data.layer.layerCode);
+        } catch(e) {}
+    },
+
+    createLayerSwitcher: function() {
+        var control = new OpenLayers.Control.LayerSwitcher({roundedCorner: false});
+        // XXX: we need to "live-patch" LayerSwitcher to use our icons. We use
+        // a regexp instead of a string in case OpenLayers is modified and in
+        // case browsers modify the function representation
+        control.loadContents = eval('(function() { return (' + control.loadContents.toString().replace(
+                    /\s*=\s*imgLocation\s*\+\s*['"]layer-switcher-maximize\.png['"]\s*;/,
+                    " = 'icons/layer-switcher-maximize-flipped.png';"
+                    ) + ')}())');
+        var oldMaximizeControl = control.maximizeControl;
+        var self = this;
+        control.maximizeControl = (function(oldfunc) {
+            return function() {
+                oldfunc.apply(control, arguments);
+                self.messenger.hide();
+            };
+        }(control.maximizeControl));
+
+        return control;
+    },
+
     initMaPos: function (aPos) {
         var extent = null, center = null, zoom = 0;
 
index cf6be9c37eb8e964d3ea010be1581735d046a28c..8a77bb0ee948faf92d9495aa8ea27e07e8d7733c 100644 (file)
@@ -17,12 +17,30 @@ function resizeMap() {
     map.style.height = map.offsetHeight.toString() + 'px';
 }
 
+function mapquestLayer() {
+      return new OpenLayers.Layer.OSM("Mapquest", [
+                'http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png',
+                'http://otile2.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png',
+                'http://otile3.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png',
+                'http://otile4.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png'],
+                    { attribution: SyjStrings.mapquestAttribution});
+}
+
+function osmLayer() {
+    return new OpenLayers.Layer.OSM("OSM", [
+                'http://a.tile.openstreetmap.org/${z}/${x}/${y}.png',
+                'http://b.tile.openstreetmap.org/${z}/${x}/${y}.png',
+                'http://c.tile.openstreetmap.org/${z}/${x}/${y}.png'],
+                { attribution: SyjStrings.osmAttribution});
+}
+
 function init() {
     var map = new OpenLayers.Map('map', {
                 controls: [ new OpenLayers.Control.Attribution() ],
                 theme: null}),
 
-         baseLayer = new OpenLayers.Layer.OSM("OSM", null, { attribution: SyjStrings.osmAttribution }),
+         parameters = OpenLayers.Util.getParameters(window.location.href),
+         baseLayer = null,
 
          layerOptions = {format:     OpenLayers.Format.WKT,
                         projection: WGS84,
@@ -32,6 +50,21 @@ function init() {
         viewLayer = new OpenLayers.Layer.Vector("View Layer", layerOptions),
         wkt = new OpenLayers.Format.WKT({ internalProjection: Mercator, externalProjection: WGS84 });
 
+    if (parameters.layer) {
+        switch (parameters.layer.toUpperCase()) {
+            case 'M':
+             baseLayer = mapquestLayer();
+            break;
+            case 'O':
+             baseLayer = osmLayer();
+            break;
+        }
+    }
+
+    if (!baseLayer) {
+        baseLayer = osmLayer();
+    }
+
     map.addLayers([baseLayer, viewLayer]);
     viewLayer.addFeatures([wkt.read(gInitialGeom.data)]);
     extent = viewLayer.getDataExtent();
diff --git a/public/store.js b/public/store.js
new file mode 160000 (submodule)
index 0000000..25c640b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 25c640b09962bcbf46a17e88817ce195118cfeac
index 9bffa4ffd5dfaec53444e57238475779d761598a..4cd74d3fa2ce4b2b9234b0e44e91793c71f8adb6 100755 (executable)
@@ -6595,4 +6595,4 @@ loop:   for (;;) {
 
     return itself;
 
-}());
\ No newline at end of file
+}());
index f473f40d83b5f603e9a948a7ae51febc7518ad3b..5c729f724a28e84c81a5096599748f0c09b84bb1 100644 (file)
@@ -15,6 +15,7 @@ OpenLayers/BaseTypes/Element.js
 OpenLayers/Console.js
 OpenLayers/Control/Attribution.js
 OpenLayers/Control/DrawFeature.js
+OpenLayers/Control/LayerSwitcher.js
 OpenLayers/Control/Navigation.js
 OpenLayers/Control/DragFeature.js
 OpenLayers/Control/PanZoom.js