Subversion Repositories eFlore/Applications.cel

Rev

Rev 747 | Rev 1348 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 747 Rev 833
1
//+---------------------------------------------------------------------------------------------------------+
1
//+---------------------------------------------------------------------------------------------------------+
2
// GÉNÉRAL
2
// GÉNÉRAL
3
var DEBUG = false; // Mettre à true pour afficher les messages de débogage
3
// Mettre à true pour afficher les messages de débogage
-
 
4
var DEBUG = false; 
-
 
5
// URL du web service réalisant l'insertion des données dans la base du CEL.
-
 
6
var URL_SERVICE_CEL = "http://www.tela-botanica.org/service:cel:CelWidgetSaisie";
-
 
7
// Squelette d'URL du web service d'eFlore fournissant les noms de communes.
-
 
8
var URL_SERVICE_NOM_COMMUNE = "http://www.tela-botanica.org/service:eflore:osm/0.1/nom-commune?lon={lon}&lat={lat}";
4
/**
9
/**
5
 * Stope l'évènement courrant quand on clique sur un lien.
10
 * Stope l'évènement courrant quand on clique sur un lien.
6
 * Utile pour Chrome, Safari...
11
 * Utile pour Chrome, Safari...
7
 * @param evenement
12
 * @param evenement
8
 * @return
13
 * @return
9
 */
14
 */
10
function arreter(evenement) {
15
function arreter(evenement) {
11
	if (evenement.stopPropagation) {
16
	if (evenement.stopPropagation) {
12
		evenement.stopPropagation();
17
		evenement.stopPropagation();
13
	}
18
	}
14
	return false;
19
	return false;
15
}
20
}
16
 
21
 
17
//+---------------------------------------------------------------------------------------------------------+
22
//+---------------------------------------------------------------------------------------------------------+
18
// FORMULAIRE
23
// FORMULAIRE
19
 
24
 
20
$(function() {
25
$(function() {
21
	$("#saisie-obs").validate({
26
	$("#saisie-obs").validate({
22
		rules: {
27
		rules: {
23
			prenom : "required",
28
			prenom : "required",
24
			nom : "required",
29
			nom : "required",
25
			courriel : {
30
			courriel : {
26
				required : true,
31
				required : true,
27
				email : true},
32
				email : true},
28
			courriel_confirmation : {
33
			courriel_confirmation : {
29
				required : true,
34
				required : true,
30
				equalTo: "#courriel"
35
				equalTo: "#courriel"
31
			},
36
			},
32
			milieu : "required",
37
			milieu : "required",
33
			latitude : {
38
			latitude : {
34
				required: true,
39
				required: true,
35
				range: [-90, 90]},
40
				range: [-90, 90]},
36
			longitude : {
41
			longitude : {
37
				required: true,
42
				required: true,
38
				range: [-180, 180]},
43
				range: [-180, 180]},
39
			date : {
44
			date : {
40
				required: true,
45
				required: true,
41
				date: true},
46
				date: true},
42
			taxon : "required"
47
			taxon : "required"
43
		}
48
		}
44
	});
49
	});
45
	
50
	
-
 
51
	$("#date").datepicker({
-
 
52
		   onClose: function(dateText, inst) {$("#saisie-obs").valid();}
46
	$("#date").datepicker($.datepicker.regional['fr']);
53
	});
47
	
54
	
48
	$("#courriel_confirmation").bind('paste', function(e) {
55
	$("#courriel_confirmation").bind('paste', function(e) {
49
		$("#dialogue-bloquer-copier-coller").dialog();
56
		$("#dialogue-bloquer-copier-coller").dialog();
50
		return false;
57
		return false;
51
	});
58
	});
52
	
59
	
53
	$("#localiser-gg-map").fancybox({
60
	$("#localiser-gg-map").fancybox({
54
		'modal'			: true,
61
		'modal'			: true,
55
		'autoDimensions' : true,
62
		'autoDimensions' : true,
56
		'titleShow'		: false,
63
		'titleShow'		: false,
57
		'onClosed'		: function() {
64
		'onClosed'		: function() {
58
		    $("#gg-map").hide();
65
		    $("#gg-map").hide();
59
		},
66
		},
60
		'onStart'		: function(e) {
67
		'onStart'		: function(e) {
61
			arreter(e);
68
			arreter(e);
62
			$("#gg-map-localisation").height($(window).height() - 100);
69
			$("#gg-map-localisation").height($(window).height() - 100);
63
			$("#gg-map-carte").height($(window).height() - 200);
70
			$("#gg-map-carte").height($(window).height() - 200);
64
			$("#gg-map-localisation").width($(window).width() - 100);
71
			$("#gg-map-localisation").width($(window).width() - 100);
65
		},
72
		},
66
		'onComplete'	: function() {
73
		'onComplete'	: function() {
67
			initialiserCarte();
74
			initialiserCarte();
68
		}
75
		}
69
	});
76
	});
70
	
77
	
71
	$("#valider-coordonnees").click(function(e) {
78
	$("#valider-coordonnees").click(function(e) {
72
		var coordonnees = $("#marqueur-coordonnees").data('latLon');
79
		var coordonnees = $("#marqueur-coordonnees").data('latLon');
73
		if (coordonnees != undefined) {
80
		if (coordonnees != undefined) {
74
			$("#latitude").val(coordonnees.lat);
81
			$("#latitude").val(coordonnees.lat);
75
			$("#longitude").val(coordonnees.lon);
82
			$("#longitude").val(coordonnees.lon);
76
		}
83
		}
-
 
84
		var commune = $("#marqueur-commune").data('commune');
-
 
85
		if (commune != undefined) {
-
 
86
			$("#commune_nom").val(commune.nom);
-
 
87
			$("#commune_code_insee").val(commune.codeInsee);
-
 
88
		}
77
		$.fancybox.close();
89
		$.fancybox.close();
-
 
90
		$("#saisie-obs").valid();
78
	});
91
	});
79
	$("#annuler-coordonnees").bind('click', function(e) {
92
	$("#annuler-coordonnees").bind('click', function(e) {
80
		$.fancybox.close();
93
		$.fancybox.close();
-
 
94
		$("#saisie-obs").valid()
81
	});
95
	});
82
	
96
	
83
	var obsNumero = 0;
97
	var obsNumero = 0;
84
	$("#ajouter-obs").bind('click', function(e) {
98
	$("#ajouter-obs").bind('click', function(e) {
85
		if ($("#saisie-obs").valid() == false) {
99
		if ($("#saisie-obs").valid() == false) {
86
			$("#dialogue-form-invalide").dialog();
100
			$("#dialogue-form-invalide").dialog();
87
		} else {
101
		} else {
88
			obsNumero = obsNumero + 1;
102
			obsNumero = obsNumero + 1;
89
			$("#liste-obs tbody").append(
103
			$("#liste-obs tbody").append(
90
				'<tr id="obs'+obsNumero+'" class="obs">'+
104
				'<tr id="obs'+obsNumero+'" class="obs">'+
91
					'<td>'+obsNumero+'</td>'+
105
					'<td>'+obsNumero+'</td>'+
92
					'<td>'+$("#date").val()+'</td>'+
106
					'<td>'+$("#date").val()+'</td>'+
93
					'<td>'+$("#taxon option:selected").text()+'</td>'+
107
					'<td>'+$("#taxon option:selected").text()+'</td>'+
94
					'<td>'+$("#milieu option:selected").text()+'</td>'+
108
					'<td>'+$("#milieu option:selected").text()+'</td>'+
95
					'<td>'+$("#latitude").val()+'</td>'+
109
					'<td>'+$("#latitude").val()+'</td>'+
96
					'<td>'+$("#longitude").val()+'</td>'+
110
					'<td>'+$("#longitude").val()+'</td>'+
97
					'<td>'+$("#notes").val()+'</td>'+
111
					'<td>'+$("#notes").val()+'</td>'+
98
					'<td><button class="supprimer-obs" value="'+obsNumero+'" title="'+obsNumero+'">Supprimer</button></td>'+
112
					'<td><button class="supprimer-obs" value="'+obsNumero+'" title="'+obsNumero+'">Supprimer</button></td>'+
99
				'</tr>');
113
				'</tr>');
100
			var numNomSel = $("#taxon").val();
114
			var numNomSel = $("#taxon").val();
101
			$("#liste-obs").data('obsId'+obsNumero, {
115
			$("#liste-obs").data('obsId'+obsNumero, {
102
				'date' : $("#date").val(), 
116
				'date' : $("#date").val(), 
103
				'num_nom_sel' : numNomSel,
117
				'num_nom_sel' : numNomSel,
104
				'nom_sel' : taxons[numNomSel]['nom_sel'],
118
				'nom_sel' : taxons[numNomSel]['nom_sel'],
105
				'nom_ret' : taxons[numNomSel]['nom_ret'],
119
				'nom_ret' : taxons[numNomSel]['nom_ret'],
106
				'num_nom_ret' : taxons[numNomSel]['num_nom_ret'],
120
				'num_nom_ret' : taxons[numNomSel]['num_nom_ret'],
107
				'num_taxon' : taxons[numNomSel]['num_taxon'],
121
				'num_taxon' : taxons[numNomSel]['num_taxon'],
108
				'famille' : taxons[numNomSel]['famille'],
122
				'famille' : taxons[numNomSel]['famille'],
109
				'nom_fr' : taxons[numNomSel]['nom_fr'],
123
				'nom_fr' : taxons[numNomSel]['nom_fr'],
110
				'milieu' : $("#milieu option:selected").val(),
124
				'milieu' : $("#milieu option:selected").val(),
111
				'latitude' : $("#latitude").val(),
125
				'latitude' : $("#latitude").val(),
112
				'longitude' : $("#longitude").val(),
126
				'longitude' : $("#longitude").val(),
113
				'tag' : 'Biodiversite34',
127
				'commune_nom' : $("#commune_nom").val(),
-
 
128
				'commune_code_insee' : $("#commune_code_insee").val(),
114
				'notes' : $("#notes").val()});
129
				'notes' : $("#notes").val()});
115
		}
130
		}
116
	});
131
	});
117
	
132
	
118
	$(".supprimer-obs").live('click', function() {
133
	$(".supprimer-obs").live('click', function() {
119
		var obsId = $(this).val();
134
		var obsId = $(this).val();
120
		// Problème avec IE 6 et 7
135
		// Problème avec IE 6 et 7
121
		if (obsId == "Supprimer") {
136
		if (obsId == "Supprimer") {
122
			obsId = $(this).attr("title");
137
			obsId = $(this).attr("title");
123
		}
138
		}
124
		
139
		
125
		$('#obs'+obsId).remove();
140
		$('#obs'+obsId).remove();
126
		$("#liste-obs").removeData('obsId'+obsId)
141
		$("#liste-obs").removeData('obsId'+obsId)
127
	});
142
	});
128
	
143
	
129
	$("#tramsmettre-obs").click(function(e) {
144
	$("#tramsmettre-obs").click(function(e) {
130
		var observations = $("#liste-obs").data();
145
		var observations = $("#liste-obs").data();
131
		
146
		
132
		if (observations == undefined || jQuery.isEmptyObject(observations)) {
147
		if (observations == undefined || jQuery.isEmptyObject(observations)) {
133
			$("#dialogue-zero-obs").dialog();
148
			$("#dialogue-zero-obs").dialog();
134
		} else if ($("#saisie-obs").valid() == false) {
149
		} else if ($("#saisie-obs").valid() == false) {
135
			$("#dialogue-form-invalide").dialog();
150
			$("#dialogue-form-invalide").dialog();
136
		} else {
151
		} else {
-
 
152
			observations['projet'] = 'Biodiversite34';
-
 
153
			
137
			var utilisateur = new Object();
154
			var utilisateur = new Object();
138
			utilisateur.prenom = $("#prenom").val();
155
			utilisateur.prenom = $("#prenom").val();
139
			utilisateur.nom = $("#nom").val();
156
			utilisateur.nom = $("#nom").val();
140
			utilisateur.courriel = $("#courriel").val();
157
			utilisateur.courriel = $("#courriel").val();
141
			observations['utilisateur'] = utilisateur;
158
			observations['utilisateur'] = utilisateur;
142
			
159
			
143
			//"http://localhost/cel-jrest/CelWidgetSaisie"
160
			var erreurMsg = "";
144
			$.ajax({
161
			$.ajax({
145
				url : "http://www.tela-botanica.org/eflore-test/cel2/jrest/CelWidgetSaisie",
162
				url : URL_SERVICE_CEL,
146
				type : "POST",
163
				type : "POST",
147
				data : observations,
164
				data : observations,
148
				context : document.body,
165
				dataType : "json",
149
				beforeSend : function() {
166
				beforeSend : function() {
150
					$("#msg").remove();	
167
					$(".msg").remove();	
151
					$("#msg-erreur").remove();
168
					$(".msg-erreur").remove();
-
 
169
					$(".msg-debug").remove();
-
 
170
				},
-
 
171
				success : function(data, textStatus, jqXHR) {
152
					$("#msg-debug").remove();
172
					$("#dialogue-obs-transaction").append('<p class="msg">Vos observations ont bien été transmises.</p>');
153
				},
173
				},
154
				statusCode : {
174
				statusCode : {
155
				    500 : function(jqXHR, textStatus, errorThrown) {
175
				    500 : function(jqXHR, textStatus, errorThrown) {
156
						$("#dialogue-obs-transaction").append('<p id="msg">Un problème est survenu lors de la transmission de vos observations.</p>');
176
						erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";
157
						reponse = jQuery.parseJSON(jqXHR.responseText);
177
						reponse = jQuery.parseJSON(jqXHR.responseText);
158
						var erreurMsg = "";
-
 
159
						if (reponse != null) {
178
						if (reponse != null) {
160
							$.each(reponse, function (cle, valeur) {
179
							$.each(reponse, function (cle, valeur) {
161
								erreurMsg += valeur + "<br />";
180
								erreurMsg += valeur + "\n";
162
							});
181
							});
163
						}
182
						}
164
						
-
 
-
 
183
						if (DEBUG) {
165
						$("#dialogue-obs-transaction").append('<p id="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
184
							$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
-
 
185
						}
166
				    }
186
				    }
167
				},
187
				},
168
				success : function(data, textStatus, jqXHR) {
188
				error : function(jqXHR, textStatus, errorThrown) {
-
 
189
					erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
-
 
190
					reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
191
					if (reponse != null) {
-
 
192
						$.each(reponse, function (cle, valeur) {
-
 
193
							erreurMsg += valeur + "\n";
-
 
194
						});
-
 
195
					}
-
 
196
					
-
 
197
					if (DEBUG) {
169
					$("#dialogue-obs-transaction").append('<p id="msg">Vos observations ont bien été transmises.</p>');
198
						$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
-
 
199
					}
170
				},
200
				},
171
				complete : function(jqXHR, textStatus) {
201
				complete : function(jqXHR, textStatus) {
172
					var debugMsg = "";
202
					var debugMsg = '';
173
					if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
203
					if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
174
						debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
204
						debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
175
						if (debugInfos != null) {
205
						if (debugInfos != null) {
176
							$.each(debugInfos, function (cle, valeur) {
206
							$.each(debugInfos, function (cle, valeur) {
177
								debugMsg += valeur + "<br />";
207
								debugMsg += valeur + "\n";
178
							});
208
							});
179
							$("#dialogue-obs-transaction").append('<pre id="msg-debug">Débogage : '+debugMsg+'</pre>');
-
 
180
						}
209
						}
181
					}
210
					}
-
 
211
					if (erreurMsg != '') {
-
 
212
						$("#dialogue-obs-transaction").append('<p class="msg">'+
-
 
213
								'Une erreur est survenue lors de la transmission de vos observations.'+'<br />'+
-
 
214
								'Vous pouvez signaler le disfonctionnement à <a href="'+
-
 
215
								'mailto:cel@tela-botanica.org'+'?'+
-
 
216
								'subject=Disfonctionnement du widget de saisie Biodiversite34'+
-
 
217
								"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
-
 
218
								'">cel@tela-botanica.org</a>.'+
-
 
219
								'</p>');
-
 
220
					}
-
 
221
					if (DEBUG) {
-
 
222
						$("#dialogue-obs-transaction").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
-
 
223
					}
182
					
224
					
183
					$("#dialogue-obs-transaction").dialog();
225
					$("#dialogue-obs-transaction").dialog();
184
					$("#liste-obs").removeData();
226
					$("#liste-obs").removeData();
185
					$('.obs').remove();
227
					$('.obs').remove();
186
					obsNumero = 0;
228
					obsNumero = 0;
187
				},
229
				}
188
	
-
 
189
			});
230
			});
190
		}
231
		}
191
		return false;
232
		return false;
192
	});
233
	});
193
});
234
});
194
 
235
 
195
//+---------------------------------------------------------------------------------------------------------+
236
//+---------------------------------------------------------------------------------------------------------+
196
// GOOGLE MAP
237
// GOOGLE MAP
197
 
238
 
198
var geocoder;
239
var geocoder;
199
var latLng;
240
var latLng;
200
var map;
241
var map;
201
var marker;
242
var marker;
202
var osmMapType;
243
var osmMapType;
203
function initialiserCarte() {
244
function initialiserCarte() {
204
	geocoder = new google.maps.Geocoder();
245
	geocoder = new google.maps.Geocoder();
205
	latLng = new google.maps.LatLng(43.577, 3.455);
246
	latLng = new google.maps.LatLng(43.577, 3.455);
206
	map = new google.maps.Map(document.getElementById('gg-map-carte'), {
247
	map = new google.maps.Map(document.getElementById('gg-map-carte'), {
207
		zoom: 9,
248
		zoom: 9,
208
		mapTypeId: google.maps.MapTypeId.HYBRID,
249
		mapTypeId: google.maps.MapTypeId.HYBRID,
209
		mapTypeControlOptions: {
250
		mapTypeControlOptions: {
210
			mapTypeIds: ['OSM', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.TERRAIN]}
251
			mapTypeIds: ['OSM', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.TERRAIN]}
211
	});
252
	});
212
 
253
 
213
	// Ajout de la couche OSM à la carte
254
	// Ajout de la couche OSM à la carte
214
	osmMapType = new google.maps.ImageMapType({
255
	osmMapType = new google.maps.ImageMapType({
215
		getTileUrl: function(coord, zoom) {
256
		getTileUrl: function(coord, zoom) {
216
			return "http://tile.openstreetmap.org/" +
257
			return "http://tile.openstreetmap.org/" +
217
			zoom + "/" + coord.x + "/" + coord.y + ".png";
258
			zoom + "/" + coord.x + "/" + coord.y + ".png";
218
		},
259
		},
219
		tileSize: new google.maps.Size(256, 256),
260
		tileSize: new google.maps.Size(256, 256),
220
		isPng: true,
261
		isPng: true,
221
		alt: "OpenStreetMap",
262
		alt: "OpenStreetMap",
222
		name: "OSM",
263
		name: "OSM",
223
		maxZoom: 19
264
		maxZoom: 19
224
	});
265
	});
225
	map.mapTypes.set('OSM', osmMapType);
266
	map.mapTypes.set('OSM', osmMapType);
226
	
267
	
227
	// Ajout des limites de communes
268
	// Ajout des limites de communes
228
	ctaLayer = new google.maps.KmlLayer('http://www.tela-botanica.org/commun/google/map/3/kmz/communes/34.kmz', {preserveViewport: true});
269
	ctaLayer = new google.maps.KmlLayer('http://www.tela-botanica.org/commun/google/map/3/kmz/communes/34.kmz', {preserveViewport: true});
229
	ctaLayer.setMap(map);
270
	ctaLayer.setMap(map);
230
	
271
	
231
	// Définition du marqueur
272
	// Définition du marqueur
232
	marker = new google.maps.Marker({
273
	marker = new google.maps.Marker({
233
		position: latLng,
274
		position: latLng,
234
		title: 'Ma station',
275
		title: 'Ma station',
235
		map: map,
276
		map: map,
236
		draggable: true
277
		draggable: true
237
	});
278
	});
238
	deplacerMarker(latLng);
279
	deplacerMarker(latLng);
239
	
280
	
240
	// Tentative de géolocalisation
281
	// Tentative de géolocalisation
241
	if(navigator.geolocation) {	// Try W3C Geolocation (Preferred)
282
	if(navigator.geolocation) {	// Try W3C Geolocation (Preferred)
242
		navigator.geolocation.getCurrentPosition(function(position) {
283
		navigator.geolocation.getCurrentPosition(function(position) {
243
			(DEBUG) ? console.log("Géolocalisation OK.") : '';
284
			(DEBUG) ? console.log("Géolocalisation OK.") : '';
244
			latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
285
			latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
245
			deplacerMarker(latLng);
286
			deplacerMarker(latLng);
246
			map.setCenter(latLng);
287
			map.setCenter(latLng);
247
		}, function() {
288
		}, function(erreur) {
248
			(DEBUG) ? console.log("Géolocalisation échouée.") : '';
289
			(DEBUG) ? console.log("Géolocalisation échouée : "+erreur.code+" = "+erreur.message) : '';
249
		});
290
		});
250
	} else { //Browser doesn't support Geolocation
291
	} else { //Browser doesn't support Geolocation
251
		(DEBUG) ? console.log("Navigateur ne supportant pas la géolocalisation. Localisation par défaut.") : '';
292
		(DEBUG) ? console.log("Navigateur ne supportant pas la géolocalisation. Localisation par défaut.") : '';
252
	}
293
	}
-
 
294
	deplacerMarker(latLng);
-
 
295
	map.setCenter(latLng);
253
	
296
	
254
	// Add des évènements concernant le marqueur
297
	// Add des évènements concernant le marqueur
255
	google.maps.event.addListener(marker, 'dragstart', function() {
298
	google.maps.event.addListener(marker, 'dragstart', function() {
256
		mettreAJourMarkerAdresse('Marqueur de station début du déplacement...');
299
		mettreAJourMarkerAdresse('Marqueur de station début du déplacement...');
257
	});
300
	});
258
	
301
	
259
	google.maps.event.addListener(marker, 'drag', function() {
302
	google.maps.event.addListener(marker, 'drag', function() {
260
		mettreAJourMarkerStatut('Marqueur de station en cours de déplacement...');
303
		mettreAJourMarkerStatut('Marqueur de station en cours de déplacement...');
261
		mettreAJourMarkerPosition(marker.getPosition());
304
		mettreAJourMarkerPosition(marker.getPosition());
262
	});
305
	});
263
	
306
	
264
	google.maps.event.addListener(marker, 'dragend', function() {
307
	google.maps.event.addListener(marker, 'dragend', function() {
265
		mettreAJourMarkerStatut('Marqueur de station déplacé (glisser/déposer).');
308
		mettreAJourMarkerStatut('Marqueur de station déplacé (glisser/déposer).');
266
		mettreAJourMarkerPosition(marker.getPosition());
309
		mettreAJourMarkerPosition(marker.getPosition());
267
		geocoderPosition(marker.getPosition());
310
		geocoderPosition(marker.getPosition());
-
 
311
		trouverCommune(marker.getPosition());
268
	});
312
	});
269
	
313
	
270
	google.maps.event.addListener(map, 'click', function(event) {
314
	google.maps.event.addListener(map, 'click', function(event) {
271
		deplacerMarker(event.latLng);
315
		deplacerMarker(event.latLng);
272
	});
316
	});
273
}
317
}
274
 
318
 
275
function deplacerMarker(latLon) {
319
function deplacerMarker(latLon) {
276
	if (marker != undefined) {
320
	if (marker != undefined) {
277
		marker.setPosition(latLon);
321
		marker.setPosition(latLon);
278
		mettreAJourMarkerStatut('Marqueur de station déplacé (clic).');
322
		mettreAJourMarkerStatut('Marqueur de station déplacé (clic).');
279
		mettreAJourMarkerPosition(marker.getPosition());
323
		mettreAJourMarkerPosition(marker.getPosition());
280
		geocoderPosition(marker.getPosition());
324
		geocoderPosition(marker.getPosition());
-
 
325
		trouverCommune(marker.getPosition());
281
	}
326
	}
282
}
327
}
283
 
328
 
284
function geocoderPosition(pos) {
329
function geocoderPosition(pos) {
285
	if (geocoder != undefined) {
330
	if (geocoder != undefined) {
286
		geocoder.geocode({
331
		geocoder.geocode({
287
			latLng: pos
332
			latLng: pos
288
		}, function(responses, status) {
333
		}, function(responses, status) {
289
			if (status == google.maps.GeocoderStatus.OK) {
334
			if (status == google.maps.GeocoderStatus.OK) {
290
				if (responses && responses.length > 0) {
335
				if (responses && responses.length > 0) {
291
					mettreAJourMarkerAdresse(responses[0].formatted_address);
336
					mettreAJourMarkerAdresse(responses[0].formatted_address);
292
				} else {
337
				} else {
293
					mettreAJourMarkerAdresse("Impossible de trouver d'adresse pour cette position.");
338
					mettreAJourMarkerAdresse("Impossible de trouver d'adresse pour cette position.");
294
				}
339
				}
295
			} else {
340
			} else {
296
				mettreAJourMarkerAdresse("Un problème de géolocalisation est survenu : "+status+".");
341
				mettreAJourMarkerAdresse("Un problème de géolocalisation est survenu : "+status+".");
297
			}
342
			}
298
		});
343
		});
299
	}
344
	}
300
}
345
}
-
 
346
 
-
 
347
function trouverCommune(pos) {
-
 
348
	$(function() {
-
 
349
		var urlNomCommuneFormatee = URL_SERVICE_NOM_COMMUNE.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
-
 
350
		$.ajax({
-
 
351
			url : urlNomCommuneFormatee,
-
 
352
			type : "GET",
-
 
353
			dataType : "json",
-
 
354
			beforeSend : function() {
-
 
355
				$(".commune-info").empty();	
-
 
356
				$("#dialogue-erreur").empty();
-
 
357
			},
-
 
358
			success : function(data, textStatus, jqXHR) {
-
 
359
				$(".commune-info").empty();
-
 
360
				$("#commune-nom").append(data.nom);
-
 
361
				$("#commune-code-insee").append(data.codeINSEE);
-
 
362
				$("#marqueur-commune").data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});
-
 
363
			},
-
 
364
			statusCode : {
-
 
365
			    500 : function(jqXHR, textStatus, errorThrown) {
-
 
366
					if (DEBUG) {	
-
 
367
						$("#dialogue-erreur").append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
-
 
368
						reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
369
						var erreurMsg = "";
-
 
370
						if (reponse != null) {
-
 
371
							$.each(reponse, function (cle, valeur) {
-
 
372
								erreurMsg += valeur + "<br />";
-
 
373
							});
-
 
374
						}
-
 
375
						
-
 
376
						$("#dialogue-erreur").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
-
 
377
					}
-
 
378
			    }
-
 
379
			},
-
 
380
			error : function(jqXHR, textStatus, errorThrown) {
-
 
381
				if (DEBUG) {
-
 
382
					$("#dialogue-erreur").append('<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');
-
 
383
					reponse = jQuery.parseJSON(jqXHR.responseText);
-
 
384
					var erreurMsg = "";
-
 
385
					if (reponse != null) {
-
 
386
						$.each(reponse, function (cle, valeur) {
-
 
387
							erreurMsg += valeur + "<br />";
-
 
388
						});
-
 
389
					}
-
 
390
					
-
 
391
					$("#dialogue-erreur").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
-
 
392
				}
-
 
393
			},
-
 
394
			complete : function(jqXHR, textStatus) {
-
 
395
				if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
-
 
396
					var debugMsg = "";
-
 
397
					debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
-
 
398
					if (debugInfos != null) {
-
 
399
						$.each(debugInfos, function (cle, valeur) {
-
 
400
							debugMsg += valeur + "<br />";
-
 
401
						});
-
 
402
						$("#dialogue-erreur").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
-
 
403
					}
-
 
404
				}
-
 
405
				if ($("#dialogue-erreur .msg").length > 0) {
-
 
406
					$("#dialogue-erreur").dialog();
-
 
407
				}
-
 
408
			}
-
 
409
		});
-
 
410
	});
-
 
411
}
301
 
412
 
302
function mettreAJourMarkerStatut(str) {
413
function mettreAJourMarkerStatut(str) {
303
	document.getElementById('marqueur-statut').innerHTML = str;
414
	document.getElementById('marqueur-statut').innerHTML = str;
304
}
415
}
305
 
416
 
306
function mettreAJourMarkerPosition(latLng) {
417
function mettreAJourMarkerPosition(latLng) {
307
	var lat = latLng.lat().toFixed(5);
418
	var lat = latLng.lat().toFixed(5);
308
	var lon = latLng.lng().toFixed(5); 
419
	var lon = latLng.lng().toFixed(5); 
309
	document.getElementById('marqueur-wgs84').innerHTML = [lat, lon].join(', ');
420
	document.getElementById('marqueur-wgs84').innerHTML = [lat, lon].join(', ');
310
	$("#marqueur-coordonnees").data('latLon', {'lat' : lat, 'lon' : lon});
421
	$("#marqueur-coordonnees").data('latLon', {'lat' : lat, 'lon' : lon});
311
	
422
	
312
	Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
423
	Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";
313
	Proj4js.defs["EPSG:2154"]="+title=RGF93 / Lambert-93 +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ";
424
	Proj4js.defs["EPSG:2154"]="+title=RGF93 / Lambert-93 +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ";
314
	var source = new Proj4js.Proj('EPSG:4326');// Coordonnées source : WGS 84
425
	var source = new Proj4js.Proj('EPSG:4326');// Coordonnées source : WGS 84
315
	var dest = new Proj4js.Proj('EPSG:2154');// Coordonnées destination  : Lambert 93
426
	var dest = new Proj4js.Proj('EPSG:2154');// Coordonnées destination  : Lambert 93
316
	var p = new Proj4js.Point(lon+','+lat);//lon+','+lat any object will do as long as it has 'x' and 'y' properties
427
	var p = new Proj4js.Point(lon+','+lat);//lon+','+lat any object will do as long as it has 'x' and 'y' properties
317
	Proj4js.transform(source, dest, p);
428
	Proj4js.transform(source, dest, p);
318
	//Proj4js.reportError = function(msg) {alert(msg);}
429
	//Proj4js.reportError = function(msg) {alert(msg);}
319
	//console.log(p.toString());
430
	//console.log(p.toString());
320
	document.getElementById('marqueur-lambert93').innerHTML = [p.x.toFixed(0)+' '+dest.units, p.y.toFixed(0)+' '+dest.units].join(', ');
431
	document.getElementById('marqueur-lambert93').innerHTML = [p.x.toFixed(0)+' '+dest.units, p.y.toFixed(0)+' '+dest.units].join(', ');
321
}
432
}
322
 
433
 
323
function mettreAJourMarkerAdresse(str) {
434
function mettreAJourMarkerAdresse(str) {
324
	document.getElementById('marqueur-adresse').innerHTML = str;
435
	document.getElementById('marqueur-adresse').innerHTML = str;
325
}
436
}
326
 
437