通过 JavaScript 从邮政编码获取纬度和经度

4

我正在尝试编写一个函数,根据邮编返回纬度和经度。我尝试使用谷歌地图 API 来实现这一点。

我发现 geocodder 对此非常好用,但我不知道如何使用它。我希望能够编写一个函数,将传入的邮编作为参数,以数组形式返回该地区的纬度和经度坐标。

我已经创建了一个账户以获取 API 密钥。例如,假设我的函数为:

function getCoordinates (zipcode);

我应该如何编写代码,使传入的邮编可以返回对应的纬度和经度呢?感谢任何回复!


地理编码器是异步的,你不能从一个函数中返回它的结果(至少不带回调或承诺)。 - geocodezip
我现在遇到了这个问题。我得到了一个错误,要么是在没有catch块的同步函数内部抛出,要么是拒绝了未使用.catch()处理的承诺。我将开始研究这意味着什么。谢谢你提醒我!如果有人想把它分解一下,那就太好了! - John
https://stackoverflow.com/search?q=user%3A1210329+geocoder+asynchronous - geocodezip
2个回答

4

您说得对,地理编码API 是您所需的。基本上,您需要执行一个GET请求到

https://maps.googleapis.com/maps/api/geocode/json?address=YOUR_ZIP&key=YOUR_API_KEY

您可能希望指定搜索的国家。为此,只需添加region参数和国家代码(例如region=us)即可。


2

如果你想知道如何从API调用中获取数据,假设你已经定义了地址参数并实际调用了函数,希望这个方法可以帮助你:

function getCoordinates(address){
  fetch("https://maps.googleapis.com/maps/api/geocode/json?address="+address+'&key='+API_KEY)
    .then(response => response.json())
    .then(data => {
      const latitude = data.results.geometry.location.lat;
      const longitude = data.results.geometry.location.lng;
      console.log({latitude, longitude})
    })
}

我不确定你是否可以通过邮政编码获取经度和纬度参数,或者只能通过地址和/或地区来获取,但这值得一试。这里是Google Maps API文档的链接。希望这能有所帮助。


是的,我非常新于JavaScript,所以不确定fetch命令如何工作。基本上,https://maps.googleapis.com/maps/api/geocode/json?address=YOUR_ZIP&key=YOUR_API_KEY 提供了一个具有“location”属性的URL。我正在尝试弄清楚如何编写一个函数来从位置对象返回lat和lng组件。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接