| 273 |
aurelien |
1 |
var tableau_couleurs = {"particulier": "#A9582B", "etablissement_scolaire" :"#8DC7B8",
|
|
|
2 |
"association": "#0000FF","professionnel": "#A7BD5B",
|
|
|
3 |
"autre": "#FFC730"};
|
| 247 |
aurelien |
4 |
|
|
|
5 |
var infowindow = new google.maps.InfoWindow();
|
| 273 |
aurelien |
6 |
var types_affiches = new Array();
|
|
|
7 |
var marqueurs = new Array();
|
| 247 |
aurelien |
8 |
|
| 245 |
aurelien |
9 |
function getUrlBaseJrest() {
|
| 303 |
aurelien |
10 |
// injecté depuis le fichier de config
|
|
|
11 |
return BASE_URL_JREST;
|
| 245 |
aurelien |
12 |
}
|
|
|
13 |
|
|
|
14 |
function initialiserCarte() {
|
|
|
15 |
|
|
|
16 |
if($('#map_canvas').length == 0) {
|
|
|
17 |
return;
|
|
|
18 |
}
|
|
|
19 |
|
|
|
20 |
var latlng = new google.maps.LatLng(47.0504, 2.2347);
|
|
|
21 |
var myOptions = {
|
|
|
22 |
zoom: 5,
|
|
|
23 |
center: latlng,
|
| 328 |
aurelien |
24 |
mapTypeId: google.maps.MapTypeId.ROADMAP
|
| 245 |
aurelien |
25 |
};
|
|
|
26 |
|
|
|
27 |
map = new google.maps.Map(document.getElementById("map_canvas"),
|
|
|
28 |
myOptions);
|
| 328 |
aurelien |
29 |
|
| 245 |
aurelien |
30 |
$('.lien_vers_profil').live('click', function(event) {
|
|
|
31 |
event.preventDefault();
|
|
|
32 |
window.open($(this).attr('href'));
|
|
|
33 |
return false;
|
|
|
34 |
});
|
| 328 |
aurelien |
35 |
|
| 245 |
aurelien |
36 |
obtenirStations();
|
|
|
37 |
}
|
|
|
38 |
|
|
|
39 |
function obtenirStations() {
|
| 328 |
aurelien |
40 |
|
|
|
41 |
$.get(getUrlBaseJrest()+'OdsExport/ExportStationJson/', function(data) {
|
|
|
42 |
|
| 270 |
aurelien |
43 |
var infos_stations = data.stations;
|
|
|
44 |
var stats = data.stats;
|
| 328 |
aurelien |
45 |
|
| 245 |
aurelien |
46 |
for(i in infos_stations) {
|
|
|
47 |
creerEtAjouterMarqueur(i, infos_stations[i]);
|
|
|
48 |
}
|
| 273 |
aurelien |
49 |
genererLegende(stats);
|
| 245 |
aurelien |
50 |
});
|
|
|
51 |
}
|
|
|
52 |
|
|
|
53 |
function obtenirImagePourChaineCouleur(chaine_couleur) {
|
| 328 |
aurelien |
54 |
|
| 245 |
aurelien |
55 |
chaine_couleur = encodeURIComponent(chaine_couleur);
|
|
|
56 |
var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
|
| 328 |
aurelien |
57 |
|
| 245 |
aurelien |
58 |
return image;
|
|
|
59 |
}
|
|
|
60 |
|
| 328 |
aurelien |
61 |
function genererLegende(stats) {
|
|
|
62 |
chaine_legende = '<div class="critere" id="legende">';
|
| 270 |
aurelien |
63 |
for(i in stats) {
|
|
|
64 |
if(i != 'total') {
|
| 273 |
aurelien |
65 |
var intitule_type = i.formaterTypePourBalise();
|
|
|
66 |
var id_legende = 'type_'+intitule_type;
|
|
|
67 |
var legende = i+' ('+stats[i]+')';
|
|
|
68 |
var couleur = tableau_couleurs[intitule_type];
|
|
|
69 |
chaine_legende += '<input class="selecteur_type" type="checkbox" value="'+intitule_type+'" id="selecteur_'+id_legende+'" />'+
|
|
|
70 |
'<span class="legende" style="background-color:'+couleur+'"></span>'+
|
|
|
71 |
'<label id="'+id_legende+'">'+legende+'</label>'+
|
|
|
72 |
'<br />';
|
| 270 |
aurelien |
73 |
} else {
|
|
|
74 |
$('#conteneur_nb_stations').text(stats[i]+' stations au total');
|
|
|
75 |
}
|
|
|
76 |
}
|
| 273 |
aurelien |
77 |
chaine_legende += '</div>';
|
|
|
78 |
$("#conteneur_legende").html(chaine_legende);
|
| 328 |
aurelien |
79 |
|
| 273 |
aurelien |
80 |
$('.selecteur_type').change(function() {
|
|
|
81 |
types_affiches = new Array();
|
|
|
82 |
$('.selecteur_type:checked').each(function(){
|
| 328 |
aurelien |
83 |
types_affiches.push($(this).attr("id").replace("selecteur_type_",''));
|
|
|
84 |
});
|
| 273 |
aurelien |
85 |
afficherMarqueursSelectionnes();
|
|
|
86 |
})
|
| 270 |
aurelien |
87 |
}
|
|
|
88 |
|
| 245 |
aurelien |
89 |
function creerEtAjouterMarqueur(id_marqueur, infos_station) {
|
| 328 |
aurelien |
90 |
|
| 245 |
aurelien |
91 |
latlng = new google.maps.LatLng(infos_station['latitude'],infos_station['longitude']);
|
| 273 |
aurelien |
92 |
var intitule_type = infos_station['type_participant'].formaterTypePourBalise();
|
| 328 |
aurelien |
93 |
var chaine_couleur = tableau_couleurs[intitule_type];
|
| 245 |
aurelien |
94 |
var image = obtenirImagePourChaineCouleur(chaine_couleur);
|
| 270 |
aurelien |
95 |
var nom_station = infos_station['nom'];
|
| 328 |
aurelien |
96 |
|
| 245 |
aurelien |
97 |
var marqueur_station = new google.maps.Marker({
|
|
|
98 |
position: latlng,
|
|
|
99 |
icon:image,
|
| 273 |
aurelien |
100 |
code:intitule_type,
|
| 270 |
aurelien |
101 |
title:nom_station,
|
|
|
102 |
optimized: true
|
| 245 |
aurelien |
103 |
});
|
|
|
104 |
|
| 247 |
aurelien |
105 |
google.maps.event.addListener(marqueur_station, 'click', function() {
|
| 328 |
aurelien |
106 |
|
| 247 |
aurelien |
107 |
contenu_fenetre = formaterContenuFenetre(infos_station);
|
| 245 |
aurelien |
108 |
infowindow.close();
|
| 288 |
aurelien |
109 |
infowindow.setContent(contenu_fenetre);
|
| 245 |
aurelien |
110 |
infowindow.open(map,this);
|
| 247 |
aurelien |
111 |
});
|
| 328 |
aurelien |
112 |
|
| 245 |
aurelien |
113 |
marqueur_station.setDraggable(false);
|
|
|
114 |
marqueur_station.setClickable(true);
|
| 328 |
aurelien |
115 |
|
|
|
116 |
marqueur_station.setMap(map);
|
| 273 |
aurelien |
117 |
marqueurs.push(marqueur_station);
|
| 247 |
aurelien |
118 |
}
|
| 245 |
aurelien |
119 |
|
| 273 |
aurelien |
120 |
function afficherMarqueursSelectionnes() {
|
|
|
121 |
for(i in marqueurs) {
|
|
|
122 |
var afficher = (types_affiches.length == 0 || jQuery.inArray(marqueurs[i].code, types_affiches) > -1) ? true : false;
|
|
|
123 |
marqueurs[i].setVisible(afficher);
|
|
|
124 |
}
|
|
|
125 |
}
|
|
|
126 |
|
| 247 |
aurelien |
127 |
function formaterContenuFenetre(infos_station) {
|
| 328 |
aurelien |
128 |
|
| 247 |
aurelien |
129 |
var contenu_fenetre = "";
|
| 270 |
aurelien |
130 |
contenu_fenetre = "<h3> "+infos_station['nom']+"</h3>";
|
|
|
131 |
contenu_fenetre += '<div class="infos_participant"> Participant : '+construireUrlProfilParticipant(infos_station['participant'])+'</div>';
|
| 247 |
aurelien |
132 |
contenu_fenetre += '<div class="infos_commune"> ';
|
| 270 |
aurelien |
133 |
if(infos_station['nom_commune'] != null && infos_station['nom_commune'] != "") {
|
|
|
134 |
contenu_fenetre += 'Commune : '+infos_station['nom_commune'];
|
| 247 |
aurelien |
135 |
}
|
| 328 |
aurelien |
136 |
|
| 270 |
aurelien |
137 |
if(infos_station['code_commune'] != null && infos_station['code_commune'] != "") {
|
|
|
138 |
contenu_fenetre += ' ('+infos_station['code_commune']+')';
|
| 247 |
aurelien |
139 |
}
|
|
|
140 |
contenu_fenetre += '</div>';
|
| 270 |
aurelien |
141 |
contenu_fenetre += '<div class="infos_altitude"> Altitude : '+infos_station['altitude']+' m</div>';
|
| 247 |
aurelien |
142 |
|
| 328 |
aurelien |
143 |
|
| 247 |
aurelien |
144 |
return contenu_fenetre;
|
| 245 |
aurelien |
145 |
}
|
|
|
146 |
|
|
|
147 |
function obtenirImagePourChaineCouleur(chaine_couleur) {
|
| 328 |
aurelien |
148 |
|
| 245 |
aurelien |
149 |
chaine_couleur = encodeURIComponent(chaine_couleur);
|
|
|
150 |
var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
|
| 328 |
aurelien |
151 |
|
| 245 |
aurelien |
152 |
return image;
|
|
|
153 |
}
|
|
|
154 |
|
| 270 |
aurelien |
155 |
function construireUrlProfilParticipant(participant) {
|
| 328 |
aurelien |
156 |
|
| 270 |
aurelien |
157 |
if(participant['id'] == null && participant['nom'] == null) {
|
| 247 |
aurelien |
158 |
return "anonyme";
|
|
|
159 |
}
|
| 328 |
aurelien |
160 |
|
| 270 |
aurelien |
161 |
var id = participant['id'];
|
| 328 |
aurelien |
162 |
|
| 270 |
aurelien |
163 |
if(participant['nom'] == null || participant['nom'] == "null") {
|
|
|
164 |
var pseudo = participant['id'];
|
|
|
165 |
} else {
|
|
|
166 |
var pseudo = participant['nom'];
|
| 247 |
aurelien |
167 |
}
|
| 328 |
aurelien |
168 |
|
| 247 |
aurelien |
169 |
return '<a class="lien_vers_profil" href="http://obs-saisons.fr/user/'+id+'"> '+pseudo+' </a>';
|
|
|
170 |
}
|
|
|
171 |
|
| 245 |
aurelien |
172 |
$('#map_canvas').ready(function() {
|
|
|
173 |
initialiserCarte();
|
| 270 |
aurelien |
174 |
});
|
|
|
175 |
|
| 273 |
aurelien |
176 |
String.prototype.formaterTypePourBalise = function() {
|
|
|
177 |
var s = this;
|
|
|
178 |
return s.removeDiacritics().replace(' ','_').toLowerCase();
|
|
|
179 |
}
|
|
|
180 |
|
| 270 |
aurelien |
181 |
String.prototype.removeDiacritics = function() {
|
|
|
182 |
var diacritics = [
|
|
|
183 |
[/[\300-\306]/g, 'A'],
|
|
|
184 |
[/[\340-\346]/g, 'a'],
|
|
|
185 |
[/[\310-\313]/g, 'E'],
|
|
|
186 |
[/[\350-\353]/g, 'e'],
|
|
|
187 |
[/[\314-\317]/g, 'I'],
|
|
|
188 |
[/[\354-\357]/g, 'i'],
|
|
|
189 |
[/[\322-\330]/g, 'O'],
|
|
|
190 |
[/[\362-\370]/g, 'o'],
|
|
|
191 |
[/[\331-\334]/g, 'U'],
|
|
|
192 |
[/[\371-\374]/g, 'u'],
|
|
|
193 |
[/[\321]/g, 'N'],
|
|
|
194 |
[/[\361]/g, 'n'],
|
|
|
195 |
[/[\307]/g, 'C'],
|
|
|
196 |
[/[\347]/g, 'c'],
|
|
|
197 |
];
|
|
|
198 |
var s = this;
|
|
|
199 |
for (var i = 0; i < diacritics.length; i++) {
|
|
|
200 |
s = s.replace(diacritics[i][0], diacritics[i][1]);
|
|
|
201 |
}
|
|
|
202 |
return s;
|
| 328 |
aurelien |
203 |
}
|