Pb pour récupérer des informations depuis un objet javascript

Fermé
vivaldiz Messages postés 1 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 8 janvier 2013 - 8 janv. 2013 à 21:58
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 9 janv. 2013 à 00:00
Bonjour,


Je cherche à récupérer la latitude et la longitude de l'objet 'e.latlng' ci-dessous.

Lorsque les informations sont obtenues avec l'adress IP (au moyen de Google Loader et la fonction 'glcl'), e.latlng retourne : '48.733,2.283', et après avoir accepté la géolocalisation dans mon navigateur (API Leaflet https://leafletjs.com/reference.html l'objet 'e.latlng' retourne un format différent : 'LatLng(48.73, 1.36401)'.

Comment puis-je extraire dans 2 variables différente la latitude et la longitude ? voici le code :

	map = L.map('map', {center: [51.505, -0.09], zoom: 13});
	
    userMarker = L.marker(map.getCenter(), {icon: redIcon}).addTo(map);
    glcl = google.loader.ClientLocation;
	
	onLocationfound = function(e){
		userMarker.setLatLng(e.latlng);
		map.setView(userMarker.getLatLng(),map.getZoom());
		alert(e.latlng);
		userMarker.bindPopup("<p>You are there! Your ID is " + userId + "</p>");
	};

	L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png').addTo(map);

    map.on('locationfound', onLocationfound);
	
	if(glcl){
	   onLocationfound({latlng:[glcl.latitude,glcl.longitude]});
	   //document.getElementById('geolocinfo').innerHTML = 'Latitude: ' + Math.round(glcl.latitude*1000)/1000 
	   //+ '<BR>' + 'Longitudes: ' + Math.round(glcl.longitude*1000)/1000
	   //+ '<BR>' + 'Your ID is:' + userId;
    }
	else{alert('google.loader.ClientLocation fails');}
	
	map.locate();


Merci,
Vivaldi
A voir également:

2 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
9 janv. 2013 à 00:00
Bonsoir Vivaldiz,

En fait c'est écrit dans le détail, ici https://leafletjs.com/reference.html#latlngbounds
Dans les "Properties" : lat & lng

Il fallait juste tomber dessus ;-)

Bonne nuit et bonne programmation,
Heliotte
1
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
8 janv. 2013 à 22:37
Bonsoir vivaldiz,

La variable de départ contient '48.733,2.283',
Le séparateur décimal est le point,
Le séparateur de données est la virgule.

La fonction disponible en JS pour séparer une variable en un tableau de variables est string.split..

var tableau=chaine.split(',');
for (var i=0; i<tableau.length; i++) {
    document.write("tableau[" + i + "] = " + tableau[i] + "<BR>");
}


Bonne soirée !
0
Bonsoir Heliotte, j'ai essayé la méthode split mais j'obtiens cette erreur : e.latlng.split is not a function. Je crois que split et string ne fonctionne que pour les objets stockés au format texte. Un typeof dessus m'indique que e.latlng est de type 'object'.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 8/01/2013 à 23:17
N'est-ce pas possible de récupérer le texte que contient cet objet .. par exemple:
- e.latlng.text.split  
ou  
- var Chaine = e.latlng.text  
  Chaine.split  
  etc..

ou mieux, comme c'est un objet, il existe peut-être une méthode pour récupérer les deux données sous forme de deux variables 'string', style:
- e.latlng.longitude et e.latlng.latidute
???

Edit:
Ou encore:
e.lat et e.lng
???
0
J'ai réussi avec :)
if(e.latlng.lat){latitude = e.latlng.lat, longitude = e.latlng.lng}
else{latitude = glcl.latitude, longitude = glcl.longitude}

Je vérifie sur la première condition est remplie (géoloc) et si son je prend les coordonées obtenues par le Google loader API. En tout cas merci Heliotte. Pour convertir un text en string afin de le manipuler avec split je crois qu'il fallait au préalable faire e.latlng.lat += '' ou e.latlng = e.latlng+''

Bonne soirée
V
0