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

vivaldiz Messages postés 1 Statut Membre -  
Heliotte Messages postés 1561 Statut Membre -
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

2 réponses

Heliotte Messages postés 1561 Statut Membre 92
 
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 1561 Statut Membre 92
 
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
Vivaldiz
 
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 1561 Statut Membre 92
 
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
Vivaldiz
 
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