1 /* |
1 /** |
2 * :organization: Logilab |
2 * :organization: Logilab |
3 * :copyright: 2003-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
3 * :copyright: 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
4 * :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
4 * :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
5 * |
|
6 * |
|
7 */ |
5 */ |
8 |
6 |
9 Widgets.GMapWidget = defclass('GMapWidget', null, { |
7 Widgets.GMapWidget = defclass('GMapWidget', null, { |
10 __init__: function(wdgnode) { |
8 __init__: function(wdgnode) { |
11 // Assume we have imported google maps JS |
9 // Assume we have imported google maps JS |
12 if (GBrowserIsCompatible()) { |
10 if (GBrowserIsCompatible()) { |
13 var uselabelstr = wdgnode.getAttribute('cubicweb:uselabel'); |
11 var uselabelstr = wdgnode.getAttribute('cubicweb:uselabel'); |
14 var uselabel = true; |
12 var uselabel = true; |
15 if (uselabelstr){ |
13 if (uselabelstr) { |
16 if (uselabelstr == 'True'){ |
14 if (uselabelstr == 'True') { |
17 uselabel = true; |
15 uselabel = true; |
18 } |
16 } |
19 else{ |
17 else { |
20 uselabel = false; |
18 uselabel = false; |
21 } |
19 } |
22 } |
20 } |
23 var map = new GMap2(wdgnode); |
21 var map = new GMap2(wdgnode); |
24 map.addControl(new GSmallMapControl()); |
22 map.addControl(new GSmallMapControl()); |
25 var jsonurl = wdgnode.getAttribute('cubicweb:loadurl'); |
23 var jsonurl = wdgnode.getAttribute('cubicweb:loadurl'); |
26 var self = this; // bind this to a local variable |
24 var self = this; // bind this to a local variable |
27 jQuery.getJSON(jsonurl, function(geodata) { |
25 jQuery.getJSON(jsonurl, function(geodata) { |
28 if (geodata.center) { |
26 if (geodata.center) { |
29 var zoomLevel = geodata.zoomlevel; |
27 var zoomLevel = geodata.zoomlevel; |
30 map.setCenter(new GLatLng(geodata.center.latitude, geodata.center.longitude), |
28 map.setCenter(new GLatLng(geodata.center.latitude, geodata.center.longitude), zoomLevel); |
31 zoomLevel); |
29 } |
32 } |
30 for (var i = 0; i < geodata.markers.length; i++) { |
33 for (var i=0; i<geodata.markers.length; i++) { |
31 var marker = geodata.markers[i]; |
34 var marker = geodata.markers[i]; |
32 self.createMarker(map, marker, i + 1, uselabel); |
35 self.createMarker(map, marker, i+1, uselabel); |
33 } |
36 } |
34 }); |
37 }); |
35 jQuery(wdgnode).after(this.legendBox); |
38 jQuery(wdgnode).after(this.legendBox); |
36 } else { // incompatible browser |
39 } else { // incompatible browser |
37 jQuery.unload(GUnload); |
40 jQuery.unload(GUnload); |
38 } |
41 } |
39 }, |
42 }, |
|
43 |
40 |
44 createMarker: function(map, marker, i, uselabel) { |
41 createMarker: function(map, marker, i, uselabel) { |
45 var point = new GLatLng(marker.latitude, marker.longitude); |
42 var point = new GLatLng(marker.latitude, marker.longitude); |
46 var icon = new GIcon(); |
43 var icon = new GIcon(); |
47 icon.image = marker.icon[0]; |
44 icon.image = marker.icon[0]; |
48 icon.iconSize = new GSize(marker.icon[1][0], marker.icon[1][1]) ; |
45 icon.iconSize = new GSize(marker.icon[1][0], marker.icon[1][1]); |
49 icon.iconAnchor = new GPoint(marker.icon[2][0], marker.icon[2][1]); |
46 icon.iconAnchor = new GPoint(marker.icon[2][0], marker.icon[2][1]); |
50 if(marker.icon[3]){ |
47 if (marker.icon[3]) { |
51 icon.shadow4 = marker.icon[3]; |
48 icon.shadow4 = marker.icon[3]; |
52 } |
49 } |
53 if (typeof LabeledMarker == "undefined") { |
50 if (typeof LabeledMarker == "undefined") { |
54 var gmarker = new GMarker(point, {icon: icon, |
51 var gmarker = new GMarker(point, { |
55 title: marker.title}); |
52 icon: icon, |
56 } else { |
53 title: marker.title |
57 var gmarker = new LabeledMarker(point, { |
54 }); |
58 icon: icon, |
55 } else { |
59 title: marker.title, |
56 var gmarker = new LabeledMarker(point, { |
60 labelText: uselabel?'<strong>' + i + '</strong>':'', |
57 icon: icon, |
61 labelOffset: new GSize(2, -32) |
58 title: marker.title, |
|
59 labelText: uselabel ? '<strong>' + i + '</strong>': '', |
|
60 labelOffset: new GSize(2, - 32) |
|
61 }); |
|
62 } |
|
63 map.addOverlay(gmarker); |
|
64 GEvent.addListener(gmarker, 'click', function() { |
|
65 jQuery.post(marker.bubbleUrl, function(data) { |
|
66 map.openInfoWindowHtml(point, data); |
|
67 }); |
62 }); |
68 }); |
63 } |
69 } |
64 map.addOverlay(gmarker); |
|
65 GEvent.addListener(gmarker, 'click', function() { |
|
66 jQuery.post(marker.bubbleUrl, function(data) { |
|
67 map.openInfoWindowHtml(point, data); |
|
68 }); |
|
69 }); |
|
70 } |
|
71 |
70 |
72 }); |
71 }); |
|
72 |