Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 288 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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,
24
		mapTypeId: google.maps.MapTypeId.HYBRID
25
	};
26
 
27
	map = new google.maps.Map(document.getElementById("map_canvas"),
28
    	myOptions);
29
 
30
	$('.lien_vers_profil').live('click', function(event) {
31
		event.preventDefault();
32
		window.open($(this).attr('href'));
33
		return false;
34
	});
35
 
36
	obtenirStations();
37
}
38
 
39
function obtenirStations() {
40
 
41
	$.get(getUrlBaseJrest()+'OdsExport/ExportStationJson/', function(data) {
42
 
270 aurelien 43
		var infos_stations = data.stations;
44
		var stats = data.stats;
245 aurelien 45
 
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) {
54
 
55
	chaine_couleur = encodeURIComponent(chaine_couleur);
56
	var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
57
 
58
    return image;
59
}
60
 
273 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);
79
 
80
	$('.selecteur_type').change(function() {
81
		types_affiches = new Array();
82
		$('.selecteur_type:checked').each(function(){
83
			types_affiches.push($(this).attr("id").replace("selecteur_type_",''));
84
		});
85
		afficherMarqueursSelectionnes();
86
	})
270 aurelien 87
}
88
 
245 aurelien 89
function creerEtAjouterMarqueur(id_marqueur, infos_station) {
90
 
91
	latlng = new google.maps.LatLng(infos_station['latitude'],infos_station['longitude']);
273 aurelien 92
	var intitule_type = infos_station['type_participant'].formaterTypePourBalise();
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'];
247 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() {
245 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
	});
245 aurelien 112
 
113
 	marqueur_station.setDraggable(false);
114
 	marqueur_station.setClickable(true);
115
 
273 aurelien 116
 	marqueur_station.setMap(map);
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) {
128
 
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
	}
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
 
143
 
144
	return contenu_fenetre;
245 aurelien 145
}
146
 
147
function obtenirImagePourChaineCouleur(chaine_couleur) {
148
 
149
	chaine_couleur = encodeURIComponent(chaine_couleur);
150
	var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
151
 
152
    return image;
153
}
154
 
270 aurelien 155
function construireUrlProfilParticipant(participant) {
247 aurelien 156
 
270 aurelien 157
	if(participant['id'] == null && participant['nom'] == null) {
247 aurelien 158
		return "anonyme";
159
	}
160
 
270 aurelien 161
	var id = participant['id'];
162
 
163
	if(participant['nom'] == null || participant['nom'] == "null") {
164
		var pseudo = participant['id'];
165
	} else {
166
		var pseudo = participant['nom'];
247 aurelien 167
	}
168
 
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;
203
}