X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fmaps.js;h=f6aa9f6750519993cfe311b5437abcc1d105f770;hb=b271177d4412bfb5d1474f7d2d1ef0990e65addd;hp=96cf94e8bdc60761bd3476362be3db92d36a03be;hpb=45dcbe4d0b623e195055d82543e3815d8b5419a4;p=platal.git diff --git a/htdocs/javascript/maps.js b/htdocs/javascript/maps.js index 96cf94e..f6aa9f6 100644 --- a/htdocs/javascript/maps.js +++ b/htdocs/javascript/maps.js @@ -19,16 +19,157 @@ ***************************************************************************/ // http://code.google.com/apis/maps/documentation/javascript/ +// http://code.google.com/p/google-maps-utility-library-v3/wiki/Libraries -function map_initialize(latitude, longitude) +function map_initialize() { - var latlng = new google.maps.LatLng(latitude, longitude); var myOptions = { zoom: 1, - center: latlng, + center: new google.maps.LatLng(0, 0), mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map($('#map_canvas').get(0), myOptions); + + $.xget(window.location.href, {ajax: true}, function(json_data) { + var data = jQuery.parseJSON(json_data); + var dots = data.data; + var count = dots.length; + var info_window = new google.maps.InfoWindow({}); + var parameters = ", '_blank', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=840,height=600'"; + var markers = []; + + for (var i = 0; i < count; ++i) { + var latLng = new google.maps.LatLng(dots[i].latitude, dots[i].longitude); + var color = promos_to_color(dots[i].promo); + + if (dots[i].hrpid.search(',') > -1) { + var hrpids = dots[i].hrpid.split(','); + var names = dots[i].name.split(','); + var link_array = new Array(); + + for (var j = 0; j < hrpids.length; ++j) { + link_array[j] = '' + names[j] + ''; + } + var link = link_array.join('
'); + } else { + var link = '' + dots[i].name + ''; + } + + var marker = new google.maps.Marker({ + 'position': latLng, + 'map': map, + 'title': dots[i].name + }); + marker.bindTo('icon', new ColoredIcon(color)); + marker.set('color', color); + marker.set('html', link); + google.maps.event.addListener(marker, 'click', function() { + info_window.setContent(this.html); + info_window.open(map, this); + }); + markers.push(marker); + } + var mc = new MarkerClusterer(map, markers, {'averageCenter': true}); + }); +} + +function ColoredIcon(color) +{ + this.set('starcolor', null); + this.set('color', color); + this.set('icon', 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=|' + color); +} + +ColoredIcon.prototype = new google.maps.MVCObject(); + +var colors = new Array(); +colors['red'] = 'ff0000'; +colors['yellow'] = 'ffff00'; +colors['blue'] = '0000ff'; +colors['green'] = '00ff00'; +colors['gray'] = '606060'; + +function promos_to_color(promos) +{ + var promos_array = promos.split(','); + var length = promos_array.length; + + if (length == 1) { + return colors[promo_to_color(promos)]; + } + + var color_array = new Array(); + for (var i = 0; i < length; ++i) { + color_array[i] = promo_to_color(promos_array[i]); + } + + return color_average(color_array); +} + +function promo_to_color(promo) +{ + var main_education = promo.charAt(0); + + switch (main_education) + { + case 'X': + var year_promo = promo.substr(1); + if ((year_promo % 2) == 0) { + return 'red'; + } else { + return 'yellow'; + } + case 'M': + return 'green'; + case 'D': + return 'blue'; + default: + return 'gray'; + } +} + +function color_average(color_array) +{ + var length = color_array.length; + var rbg = new Array(0, 0, 0); + + for (var i = 0; i < length; ++i) { + switch (color_array[i]) + { + case 'red': + rbg[0] += 1; + break; + case 'yellow': + rbg[0] += 1; + rbg[1] += 1; + break; + case 'blue': + rbg[1] += 1; + break; + case 'green': + rbg[2] += 1; + break; + case 'gray': + rbg[0] += 0.5; + rbg[1] += 0.5; + rbg[2] += 0.5; + break; + default: + break; + } + } + + var color_code = ''; + for (var i = 0; i < 3; ++i) { + var color = Math.floor(rbg[i] / length * 255); + var hexa = color.toString(16); + if (hexa.length == 1) { + hexa += '0'; + } + color_code += hexa; + } + + return color_code; } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: