web/data/cubicweb.gmap.js
changeset 5658 7b9553a9db65
parent 553 c69eac8298c0
child 5774 0d792bceb25d
equal deleted inserted replaced
5655:ef903fff826d 5658:7b9553a9db65
     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