Rev 270 | Rev 303 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
var tableau_couleurs = {"particulier": "#A9582B", "etablissement_scolaire" :"#8DC7B8",
"association": "#0000FF","professionnel": "#A7BD5B",
"autre": "#FFC730"};
var infowindow = new google.maps.InfoWindow();
var types_affiches = new Array();
var marqueurs = new Array();
function getUrlBaseJrest() {
return 'http://localhost/obs_saisons/applications/jrest/';
}
function initialiserCarte() {
if($('#map_canvas').length == 0) {
return;
}
var latlng = new google.maps.LatLng(47.0504, 2.2347);
var myOptions = {
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.HYBRID
};
map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
$('.lien_vers_profil').live('click', function(event) {
event.preventDefault();
window.open($(this).attr('href'));
return false;
});
obtenirStations();
}
function obtenirStations() {
$.get(getUrlBaseJrest()+'OdsExport/ExportStationJson/', function(data) {
var infos_stations = data.stations;
var stats = data.stats;
for(i in infos_stations) {
creerEtAjouterMarqueur(i, infos_stations[i]);
}
genererLegende(stats);
});
}
function obtenirImagePourChaineCouleur(chaine_couleur) {
chaine_couleur = encodeURIComponent(chaine_couleur);
var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
return image;
}
function genererLegende(stats) {
chaine_legende = '<div class="critere" id="legende">';
for(i in stats) {
if(i != 'total') {
var intitule_type = i.formaterTypePourBalise();
var id_legende = 'type_'+intitule_type;
var legende = i+' ('+stats[i]+')';
var couleur = tableau_couleurs[intitule_type];
chaine_legende += '<input class="selecteur_type" type="checkbox" value="'+intitule_type+'" id="selecteur_'+id_legende+'" />'+
'<span class="legende" style="background-color:'+couleur+'"></span>'+
'<label id="'+id_legende+'">'+legende+'</label>'+
'<br />';
} else {
$('#conteneur_nb_stations').text(stats[i]+' stations au total');
}
}
chaine_legende += '</div>';
$("#conteneur_legende").html(chaine_legende);
$('.selecteur_type').change(function() {
types_affiches = new Array();
$('.selecteur_type:checked').each(function(){
types_affiches.push($(this).attr("id").replace("selecteur_type_",''));
});
afficherMarqueursSelectionnes();
})
}
function creerEtAjouterMarqueur(id_marqueur, infos_station) {
latlng = new google.maps.LatLng(infos_station['latitude'],infos_station['longitude']);
var intitule_type = infos_station['type_participant'].formaterTypePourBalise();
var chaine_couleur = tableau_couleurs[intitule_type];
var image = obtenirImagePourChaineCouleur(chaine_couleur);
var nom_station = infos_station['nom'];
var marqueur_station = new google.maps.Marker({
position: latlng,
icon:image,
code:intitule_type,
title:nom_station,
optimized: true
});
google.maps.event.addListener(marqueur_station, 'click', function() {
contenu_fenetre = formaterContenuFenetre(infos_station);
infowindow.close();
infowindow.content = contenu_fenetre;
infowindow.open(map,this);
});
marqueur_station.setDraggable(false);
marqueur_station.setClickable(true);
marqueur_station.setMap(map);
marqueurs.push(marqueur_station);
}
function afficherMarqueursSelectionnes() {
for(i in marqueurs) {
var afficher = (types_affiches.length == 0 || jQuery.inArray(marqueurs[i].code, types_affiches) > -1) ? true : false;
marqueurs[i].setVisible(afficher);
}
}
function formaterContenuFenetre(infos_station) {
var contenu_fenetre = "";
contenu_fenetre = "<h3> "+infos_station['nom']+"</h3>";
contenu_fenetre += '<div class="infos_participant"> Participant : '+construireUrlProfilParticipant(infos_station['participant'])+'</div>';
contenu_fenetre += '<div class="infos_commune"> ';
if(infos_station['nom_commune'] != null && infos_station['nom_commune'] != "") {
contenu_fenetre += 'Commune : '+infos_station['nom_commune'];
}
if(infos_station['code_commune'] != null && infos_station['code_commune'] != "") {
contenu_fenetre += ' ('+infos_station['code_commune']+')';
}
contenu_fenetre += '</div>';
contenu_fenetre += '<div class="infos_altitude"> Altitude : '+infos_station['altitude']+' m</div>';
return contenu_fenetre;
}
function obtenirImagePourChaineCouleur(chaine_couleur) {
chaine_couleur = encodeURIComponent(chaine_couleur);
var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
return image;
}
function construireUrlProfilParticipant(participant) {
if(participant['id'] == null && participant['nom'] == null) {
return "anonyme";
}
var id = participant['id'];
if(participant['nom'] == null || participant['nom'] == "null") {
var pseudo = participant['id'];
} else {
var pseudo = participant['nom'];
}
return '<a class="lien_vers_profil" href="http://obs-saisons.fr/user/'+id+'"> '+pseudo+' </a>';
}
$('#map_canvas').ready(function() {
initialiserCarte();
});
String.prototype.formaterTypePourBalise = function() {
var s = this;
return s.removeDiacritics().replace(' ','_').toLowerCase();
}
String.prototype.removeDiacritics = function() {
var diacritics = [
[/[\300-\306]/g, 'A'],
[/[\340-\346]/g, 'a'],
[/[\310-\313]/g, 'E'],
[/[\350-\353]/g, 'e'],
[/[\314-\317]/g, 'I'],
[/[\354-\357]/g, 'i'],
[/[\322-\330]/g, 'O'],
[/[\362-\370]/g, 'o'],
[/[\331-\334]/g, 'U'],
[/[\371-\374]/g, 'u'],
[/[\321]/g, 'N'],
[/[\361]/g, 'n'],
[/[\307]/g, 'C'],
[/[\347]/g, 'c'],
];
var s = this;
for (var i = 0; i < diacritics.length; i++) {
s = s.replace(diacritics[i][0], diacritics[i][1]);
}
return s;
}