谷歌放置自动完成获取地点类型

时间:2017-07-03 15:50:43

标签: google-maps google-places-api

我有一个简单的应用程序,用户填写起点和终点(谷歌地方自动完成),然后,通过路线服务,我在谷歌地图上绘制路线。 我可以计算出该路线所需的燃气,驾驶员必须支付的通行费等等。

到目前为止工作正常。

现在我必须检查起点或终点是否是机场(我假设我必须检查地点类型),我不知道如何实现这一点。

我知道地方自动完成对象包含地点类型,我想知道当从自动填充中选择时,我可以将地点类型传递给隐藏字段,然后检查是否是合适的类型。 (或任何其他更合适的解决方案)

1 个答案:

答案 0 :(得分:1)

现场预测自动完成可能有点令人困惑。我们来看看下面的例子。我想找到' aeroport El Prat Barcelona'

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=aeroport%20El%20Prat%20Barcelona&key=YOUR_API_KEY

第一个预测的文字Aeroport, El Prat de Llobregat, Barcelona, Spain的地点标识为ChIJO46GD4eepBIRIn5B25NbcNQ。乍一看它似乎是机场,但当您检查响应中的类型时,您可以看到

"types":[
    "transit_station","point_of_interest","establishment","geocode"
]

所以这不是机场,而是靠近机场的火车站,如下面的截图所示。

enter image description here

此时看起来你不能100%依赖自动完成提供的类型,因为你可以得到一些非常靠近机场的东西,比如分享机场的火车或公共汽车站。在名称中。

作为一种解决方法,如果有任何机场接近自动完成返回的坐标,我建议使用附近的场所API检查。但这需要两个额外的步骤:

  1. 解析地点ID以进行协调。例如。 https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJO46GD4eepBIRIn5B25NbcNQ&key=YOUR_API_KEY将返回41.3042622,2.0733891

  2. 使用附近的搜索来确定是否存在半径范围内的机场,例如500米https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=41.3042622%2C2.0733891&radius=500&type=airport&key=YOUR_API_KEY

  3. 最后一个请求返回机场,如以下屏幕截图所示

    enter image description here