【问题标题】:Using bounds to search for coordinates使用边界搜索坐标
【发布时间】:2017-07-04 04:13:28
【问题描述】:

我尝试创建一个谷歌地图 API 调用来搜索特定边界中的地址。

所以在我的测试中,我想搜索“8670”,它是比利时一个村庄的邮政编码。这个村庄: https://www.google.com/maps/place/8670+Koksijde,+Belgium/@51.1129798,2.6459201,13z/data=!3m1!4b1!4m5!3m4!1s0x47dcba8d702c832d:0x10129f1eb06df0d2!8m2!3d51.117577!4d2.6744402

在 API 调用中使用国家参数给了我正确的答案: https://maps.googleapis.com/maps/api/geocode/json?address=8670|country:BE

但是使用 bounds-parameter 会返回美国的一个城市: https://maps.googleapis.com/maps/api/geocode/json?address=8670&bounds=53.6014224,7.0979623|49.4057287,2.4896213

我知道 bounds 不是一个严格的过滤器,但是由于该邮政编码的边界范围内有一个城市,这让我不禁想问,为什么 google 找不到它并返回一个远离我边界的城市?

我想使用边界而不是国家/地区参数的原因是因为搜索的是 3 个国家/地区(荷兰、比利时、卢森堡),据我所知,在国家/地区参数中无法使用 OR。

【问题讨论】:

    标签: google-maps google-maps-api-3


    【解决方案1】:

    文档说 bounds 参数定义了这个边界框西南角和东北角的纬度/经度坐标。

    https://developers.google.com/maps/documentation/geocoding/intro#Viewports

    所以,第一个坐标应该是西南坐标,第二个坐标应该是东北坐标。在您的示例中,您以相反的顺序 NE|SW 定义边界。只需交换 bounds 参数中的值,您就会得到预期结果 '8670 Koksijde, Belgium'(地点 ID ChIJLYMscI263EcR0v​​BtsB6fEhA):

    https://maps.googleapis.com/maps/api/geocode/json?address=8670&bounds=49.4057287%2C2.4896213%7C53.6014224%2C7.0979623&key=YOUR_API_KEY

    https://maps.googleapis.com/maps/api/geocode/json?components=postal_code%3A8670&bounds=49.4057287%2C2.4896213%7C53.6014224%2C7.0979623&key=YOUR_API_KEY

    我希望这会有所帮助!

    【讨论】:

    • 这很有帮助,因为看起来我完全监督了坐标的顺序。 (这导致我遇到另一个“问题”,当我进行相同的调用时,从我的应用程序调用 API 会产生另一个结果(从我的应用程序打印 API-Call 字符串,因此它 100% 是相同的调用)。但是这两个位置都在边界内,所以它没有错,只是奇怪的是我的应用程序的调用给出了另一个结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多