useEffect(() => {
if (latitude === "" || longitude === "") { // this is to stop fetching data on component mount, cause we have no Latitude and Longitude YET
return;
}
async function getWeather() {
let res = await axios.get(
`https://api.weatherapi.com/v1/forecast.json?key=3e5e13fac8354c818de152831211305&q=${latitude},${longitude}&days=1&aqi=no&alerts=no`
);
console.log(res.data);
console.log(res.data.location.name);
setCity(res.data.location.name);
}
getWeather();
}, [latitude, longitude]);
7条答案
按热度按时间bxpogfeg1#
我不知道它是否能与谷歌Map一起工作,但有一个网络服务可以返回国家代码,并将纬度和经度作为参数。
下面是一个例子:
http://api.geonames.org/countryCodeJSON?lat=49.03&lng=10.2&username=demo
返回JSON数据:
{"languages":"de","distance":"0","countryCode":"DE","countryName":"Germany"}
我还发现了一点描述:
任何给定点的iso国家代码。
ws.geonames.org/countryCode?
lat
、lng
、type
、lang
、radius
(沿海地区最近国家的缓冲区,单位为公里)使用参数
type=xml
,此服务返回一个包含iso国家代码和国家名称的xml文档。可选参数lang可用于指定国家名称应使用的语言。JSON输出使用type=JSON
生成参见文档
demo
只是一个演示用户,您应该在http://www.geonames.org/login上创建一个用户帐户才能使用该服务。hmae6n7t2#
Google Geocoding API以JSON格式提供这些结果。它有一个免费层,但您需要为无限制的API请求付费。
请求的API链接如下所示:
kmpatx3s3#
如果需要自包含库(即,无服务器/ Internet连接且速度快),并且仅需要国家/地区信息,则以下基于openstreetmap数据的库可能会很有用-https://github.com/hlaw/codegrid-js
回调函数用
code
调用,code
是latlng的国家代码。z3yyvxxp4#
n8ghc7c15#
是的,你可以使用谷歌Map找到给定纬度和经度的国家。使用反向地理编码服务。
您可以从服务器的响应中获取国家、城市、邮政编码和完整地址。有关详细信息,请查看链接中的示例;)
3htmauhk6#
如果你使用golang,你可以使用这两个库中的一个来获取国家,你甚至不需要调用API,因为数据集是内置的,所以它是无限的。
https://github.com/SocialHarvest/geobed
https://github.com/bradfitz/latlong
wkftcu5l7#
您可以使用以下工具:https://www.weatherapi.com/免费。
我的演示是在React和一步一步,但你可以做任何你想要的方式,关键是这个天气API,它接受LON和LAT作为字符串产生城市和天气信息-〉https://api.weatherapi.com/v1/forecast.json?key=YOUR-KEY&q=LATITUDE,LONGITUDE&days=1&aqi=no&alerts=n
注意:您将生成您自己的密钥,通过注册
为此,您将需要4个状态:
获取Lat和Lon +弹出
首先:通过使用此代码并将状态设置为纬度和经度,请求用户访问“位置”(这将有一个弹出窗口)。
根据纬度和经度获取城市/国家:
其次,使用https://www.weatherapi.com/ API获取City和其他Intel,基于Lat和Lon
API如下所示:https://api.weatherapi.com/v1/forecast.json?key=3e5e13fac8354c818de152831211305&q=53.3498053,-6.2603097&days=1&aqi=no&alerts=n
API及说明:https://api.weatherapi.com/v1/forecast.json?key=3e5e13fac8354c818de152831211305&q=LATITUDE,LONGITUDE&days=1&aqi=no&alerts=n
现在用纬度和经度调用这个API来获取位置数据,包括城市。我使用useEffect作为触发器,所以一旦我得到纬度的信息,我就使用axios调用API,并将City state设置为API对象输出的值。
这是我的youtube频道的视频,你可以在那里看到一个演示:https://youtu.be/gxcG8V3Fpbk
API结果: