Rev 747 | Blame | Last modification | View Log | RSS feed
//+---------------------------------------------------------------------------------------------------------+// GÉNÉRALvar DEBUG = false; // Mettre à true pour afficher les messages de débogage/*** Stope l'évènement courrant quand on clique sur un lien.* Utile pour Chrome, Safari...* @param evenement* @return*/function arreter(evenement) {if (evenement.stopPropagation) {evenement.stopPropagation();}return false;}//+---------------------------------------------------------------------------------------------------------+// FORMULAIRE$(function() {$("#saisie-obs").validate({rules: {prenom : "required",nom : "required",courriel : {required : true,email : true},courriel_confirmation : {required : true,equalTo: "#courriel"},milieu : "required",latitude : {required: true,range: [-90, 90]},longitude : {required: true,range: [-180, 180]},date : {required: true,date: true},taxon : "required"}});$("#date").datepicker($.datepicker.regional['fr']);$("#courriel_confirmation").bind('paste', function(e) {$("#dialogue-bloquer-copier-coller").dialog();return false;});$("#localiser-gg-map").fancybox({'modal' : true,'autoDimensions' : true,'titleShow' : false,'onClosed' : function() {$("#gg-map").hide();},'onStart' : function(e) {arreter(e);$("#gg-map-localisation").height($(window).height() - 100);$("#gg-map-carte").height($(window).height() - 200);$("#gg-map-localisation").width($(window).width() - 100);},'onComplete' : function() {initialiserCarte();}});$("#valider-coordonnees").click(function(e) {var coordonnees = $("#marqueur-coordonnees").data('latLon');if (coordonnees != undefined) {$("#latitude").val(coordonnees.lat);$("#longitude").val(coordonnees.lon);}$.fancybox.close();});$("#annuler-coordonnees").bind('click', function(e) {$.fancybox.close();});var obsNumero = 0;$("#ajouter-obs").bind('click', function(e) {if ($("#saisie-obs").valid() == false) {$("#dialogue-form-invalide").dialog();} else {obsNumero = obsNumero + 1;$("#liste-obs tbody").append('<tr id="obs'+obsNumero+'" class="obs">'+'<td>'+obsNumero+'</td>'+'<td>'+$("#date").val()+'</td>'+'<td>'+$("#taxon option:selected").text()+'</td>'+'<td>'+$("#milieu option:selected").text()+'</td>'+'<td>'+$("#latitude").val()+'</td>'+'<td>'+$("#longitude").val()+'</td>'+'<td>'+$("#notes").val()+'</td>'+'<td><button class="supprimer-obs" value="'+obsNumero+'" title="'+obsNumero+'">Supprimer</button></td>'+'</tr>');var numNomSel = $("#taxon").val();$("#liste-obs").data('obsId'+obsNumero, {'date' : $("#date").val(),'num_nom_sel' : numNomSel,'nom_sel' : taxons[numNomSel]['nom_sel'],'nom_ret' : taxons[numNomSel]['nom_ret'],'num_nom_ret' : taxons[numNomSel]['num_nom_ret'],'num_taxon' : taxons[numNomSel]['num_taxon'],'famille' : taxons[numNomSel]['famille'],'nom_fr' : taxons[numNomSel]['nom_fr'],'milieu' : $("#milieu option:selected").val(),'latitude' : $("#latitude").val(),'longitude' : $("#longitude").val(),'tag' : 'Biodiversite34','notes' : $("#notes").val()});}});$(".supprimer-obs").live('click', function() {var obsId = $(this).val();// Problème avec IE 6 et 7if (obsId == "Supprimer") {obsId = $(this).attr("title");}$('#obs'+obsId).remove();$("#liste-obs").removeData('obsId'+obsId)});$("#tramsmettre-obs").click(function(e) {var observations = $("#liste-obs").data();if (observations == undefined || jQuery.isEmptyObject(observations)) {$("#dialogue-zero-obs").dialog();} else if ($("#saisie-obs").valid() == false) {$("#dialogue-form-invalide").dialog();} else {var utilisateur = new Object();utilisateur.prenom = $("#prenom").val();utilisateur.nom = $("#nom").val();utilisateur.courriel = $("#courriel").val();observations['utilisateur'] = utilisateur;//"http://localhost/cel-jrest/CelWidgetSaisie"$.ajax({url : "http://www.tela-botanica.org/eflore-test/cel2/jrest/CelWidgetSaisie",type : "POST",data : observations,context : document.body,beforeSend : function() {$("#msg").remove();$("#msg-erreur").remove();$("#msg-debug").remove();},statusCode : {500 : function(jqXHR, textStatus, errorThrown) {$("#dialogue-obs-transaction").append('<p id="msg">Un problème est survenu lors de la transmission de vos observations.</p>');reponse = jQuery.parseJSON(jqXHR.responseText);var erreurMsg = "";if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + "<br />";});}$("#dialogue-obs-transaction").append('<p id="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');}},success : function(data, textStatus, jqXHR) {$("#dialogue-obs-transaction").append('<p id="msg">Vos observations ont bien été transmises.</p>');},complete : function(jqXHR, textStatus) {var debugMsg = "";if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));if (debugInfos != null) {$.each(debugInfos, function (cle, valeur) {debugMsg += valeur + "<br />";});$("#dialogue-obs-transaction").append('<pre id="msg-debug">Débogage : '+debugMsg+'</pre>');}}$("#dialogue-obs-transaction").dialog();$("#liste-obs").removeData();$('.obs').remove();obsNumero = 0;},});}return false;});});//+---------------------------------------------------------------------------------------------------------+// GOOGLE MAPvar geocoder;var latLng;var map;var marker;var osmMapType;function initialiserCarte() {geocoder = new google.maps.Geocoder();latLng = new google.maps.LatLng(43.577, 3.455);map = new google.maps.Map(document.getElementById('gg-map-carte'), {zoom: 9,mapTypeId: google.maps.MapTypeId.HYBRID,mapTypeControlOptions: {mapTypeIds: ['OSM', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.TERRAIN]}});// Ajout de la couche OSM à la carteosmMapType = new google.maps.ImageMapType({getTileUrl: function(coord, zoom) {return "http://tile.openstreetmap.org/" +zoom + "/" + coord.x + "/" + coord.y + ".png";},tileSize: new google.maps.Size(256, 256),isPng: true,alt: "OpenStreetMap",name: "OSM",maxZoom: 19});map.mapTypes.set('OSM', osmMapType);// Ajout des limites de communesctaLayer = new google.maps.KmlLayer('http://www.tela-botanica.org/commun/google/map/3/kmz/communes/34.kmz', {preserveViewport: true});ctaLayer.setMap(map);// Définition du marqueurmarker = new google.maps.Marker({position: latLng,title: 'Ma station',map: map,draggable: true});deplacerMarker(latLng);// Tentative de géolocalisationif(navigator.geolocation) { // Try W3C Geolocation (Preferred)navigator.geolocation.getCurrentPosition(function(position) {(DEBUG) ? console.log("Géolocalisation OK.") : '';latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);deplacerMarker(latLng);map.setCenter(latLng);}, function() {(DEBUG) ? console.log("Géolocalisation échouée.") : '';});} else { //Browser doesn't support Geolocation(DEBUG) ? console.log("Navigateur ne supportant pas la géolocalisation. Localisation par défaut.") : '';}// Add des évènements concernant le marqueurgoogle.maps.event.addListener(marker, 'dragstart', function() {mettreAJourMarkerAdresse('Marqueur de station début du déplacement...');});google.maps.event.addListener(marker, 'drag', function() {mettreAJourMarkerStatut('Marqueur de station en cours de déplacement...');mettreAJourMarkerPosition(marker.getPosition());});google.maps.event.addListener(marker, 'dragend', function() {mettreAJourMarkerStatut('Marqueur de station déplacé (glisser/déposer).');mettreAJourMarkerPosition(marker.getPosition());geocoderPosition(marker.getPosition());});google.maps.event.addListener(map, 'click', function(event) {deplacerMarker(event.latLng);});}function deplacerMarker(latLon) {if (marker != undefined) {marker.setPosition(latLon);mettreAJourMarkerStatut('Marqueur de station déplacé (clic).');mettreAJourMarkerPosition(marker.getPosition());geocoderPosition(marker.getPosition());}}function geocoderPosition(pos) {if (geocoder != undefined) {geocoder.geocode({latLng: pos}, function(responses, status) {if (status == google.maps.GeocoderStatus.OK) {if (responses && responses.length > 0) {mettreAJourMarkerAdresse(responses[0].formatted_address);} else {mettreAJourMarkerAdresse("Impossible de trouver d'adresse pour cette position.");}} else {mettreAJourMarkerAdresse("Un problème de géolocalisation est survenu : "+status+".");}});}}function mettreAJourMarkerStatut(str) {document.getElementById('marqueur-statut').innerHTML = str;}function mettreAJourMarkerPosition(latLng) {var lat = latLng.lat().toFixed(5);var lon = latLng.lng().toFixed(5);document.getElementById('marqueur-wgs84').innerHTML = [lat, lon].join(', ');$("#marqueur-coordonnees").data('latLon', {'lat' : lat, 'lon' : lon});Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";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 ";var source = new Proj4js.Proj('EPSG:4326');// Coordonnées source : WGS 84var dest = new Proj4js.Proj('EPSG:2154');// Coordonnées destination : Lambert 93var p = new Proj4js.Point(lon+','+lat);//lon+','+lat any object will do as long as it has 'x' and 'y' propertiesProj4js.transform(source, dest, p);//Proj4js.reportError = function(msg) {alert(msg);}//console.log(p.toString());document.getElementById('marqueur-lambert93').innerHTML = [p.x.toFixed(0)+' '+dest.units, p.y.toFixed(0)+' '+dest.units].join(', ');}function mettreAJourMarkerAdresse(str) {document.getElementById('marqueur-adresse').innerHTML = str;}