Browse Source

Google maps: Autorizing multiple map

Amauri CHAMPEAUX 10 years ago
parent
commit
3739c53542
1 changed files with 24 additions and 5 deletions
  1. 24 5
      tarteaucitron.services.js

+ 24 - 5
tarteaucitron.services.js

@@ -620,18 +620,37 @@ tarteaucitron.services.googlemaps = {
     "cookies": [],
     "cookies": [],
     "js": function () {
     "js": function () {
         "use strict";
         "use strict";
+        var mapOptions,
+            map,
+            uniqIds = [],
+            i;
+        
         if (tarteaucitron.user.googlemapsApiKey === undefined) {
         if (tarteaucitron.user.googlemapsApiKey === undefined) {
             return;
             return;
         }
         }
-        tarteaucitron.addScript('//maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&callback=tarteaucitron_googlemaps&key=' + tarteaucitron.user.googlemapsApiKey);
+        
+        tarteaucitron.addScript('//maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&callback=tac_googlemaps_callback&key=' + tarteaucitron.user.googlemapsApiKey);
+        
+        window.tac_googlemaps_callback = function () {
+            tarteaucitron.fallback(['googlemaps-canvas'], function (x) {
+                var uniqId = '_' + Math.random().toString(36).substr(2, 9);
+                uniqIds.push(uniqId);
+                return '<div id="' + uniqId + '" zoom="' + x.getAttribute('zoom') + '" latitude="' + x.getAttribute('latitude') + '" longitude="' + x.getAttribute('longitude') + '" style="width:' + x.offsetWidth + 'px;height:' + x.offsetHeight + 'px"></div>';
+            });
+        
+            for (i = 0; i < uniqIds.length; i += 1) {
+                mapOptions = {
+                    zoom: parseInt(document.getElementById(uniqIds[i]).getAttribute('zoom'), 10),
+                    center: new google.maps.LatLng(parseFloat(document.getElementById(uniqIds[i]).getAttribute('latitude'), 10), parseFloat(document.getElementById(uniqIds[i]).getAttribute('longitude'), 10))
+                };
+                map = new google.maps.Map(document.getElementById(uniqIds[i]), mapOptions);
+            }
+        };
     },
     },
     "fallback": function () {
     "fallback": function () {
         "use strict";
         "use strict";
         var id = 'googlemaps';
         var id = 'googlemaps';
-        
-        if (document.getElementById('tac_map-canvas')) {
-            document.getElementById('tac_map-canvas').innerHTML = tarteaucitron.engage(id);
-        }
+        tarteaucitron.fallback(['googlemaps-canvas'], tarteaucitron.engage(id));
     }
     }
 };
 };