Mi objetivo es obtener la longitud, latitud y el nombre de todos los países y territorios del mundo, con la ayuda de la API de Nominatim, utilizando JavaScript, para agregarlos como puntos pequeños en los que se puede hacer clic en un mapa mundial de Leaflet.
Acceder a la url usando un navegador funciona bien:
https://nominatim.openstreetmap.org/search?country=SG&format=json
Parece que no puedo recibir ninguna de las declaraciones de console.log , incluso con un país:
var XHR = new XMLHttpRequest(); XHR.onreadystatechange = function () { if (XHR.readyState == 4 && XHR.status == 200) { console.log(XHR.responseText); } }; XHR.open("GET", "https://www.nominatim.openstreetmap.org/search?country=SG&format=json"); XHR.send(); console.log(XHR);Entonces, probé un método diferente, que falló:
let url = 'https://www.nominatim.openstreetmap.org/search?country=SG&format=json'; fetch(url) .then(response => response.json()) .then(function (data) { latitude = data.lat; longitude = data.lon; }); console.log(latitude); console.log(longtitude);Guíeme sobre dónde me equivoqué o qué otra API puedo usar para lograr mi objetivo mencionado anteriormente. Gracias.
Pierde el www al principio de tu URL, nominatim es un subdominio de openstreetmap . Esto generalmente lo hace el navegador web automáticamente, es por eso que no sucede cuando ingresa la URL en el navegador
Código de trabajo:
var XHR = new XMLHttpRequest(); XHR.onreadystatechange = function () { if (XHR.readyState == 4 && XHR.status == 200) { console.log(XHR.responseText); } }; XHR.open("GET", "https://nominatim.openstreetmap.org/search?country=SG&format=json"); XHR.send(); console.log(XHR);