//First, get longitude and latitude from our location
window.addEventListener('load', () => {
/*So after page loads, we can grab location*/
let long;
let lat;
if (navigator.geolocation) {
/*to find the exact position of the user*/
navigator.geolocation.getCurrentPosition((position) => {
longitude = position.coords.longitude; /*define long variable to use it*/
latitude = position.coords.latitude; /*define lat variable to use it*/
/*define api variable to use it and set equal to api key url*/
const api = `http://dataservice.accuweather.com/locations/v1/cities/geoposition/search?apikey=tKaw1CfZNYzIxjfRsxVph6F=${lat},${long}`;
/*fetch the api*/
fetch(api)
.then((response) => {
return response.json(); /* turn data into json*/
})
.then((data) => {
/*Access the actual data in now returned json*/
});
});
}
});
I guess you have a problem with the request URL, missing &q=
your request URL
const api = `http://dataservice.accuweather.com/locations/v1/cities/geoposition/search?apikey=tKaw1CfZNYzIxjfRsxVph6F=${lat},${long}`;
proper URL
const api = `http://dataservice.accuweather.com/locations/v1/cities/geoposition/search?apikey=tKaw1CfZNYzIxjfRsxVph6F&q=${lat},${long}`;
And an important note: Make sure that you don't share your private API Key in public
You could try with this code, I've made some changes in fetch function according to the documentation.
Also, could you please test your apiKey in the Accuweather API website
window.addEventListener('load', () => {
/*So after page loads, we can grab location*/
let lat, long;
if (navigator.geolocation) {
/*to find the exact position of the user*/
navigator.geolocation.getCurrentPosition((position) => {
lat = position.coords.latitude; /*define lat variable to use it*/
long = position.coords.longitude; /*define long variable to use it*/
apiKey = ''; //your apiKey
/*define api variable to use it and set equal to api key url*/
const api = `http://dataservice.accuweather.com/locations/v1/cities/geoposition/search?apikey=${apiKey}&q=${lat},${long}`;
/*fetch the api*/
fetch(api)
.then(response => response.json()) /* turn data into json*/
.then((data) => {
/*Access the actual data in now returned json*/
console.log(data)
});
});
}
});