我有一个简单的应用程序,用户填写起点和终点(谷歌地方自动完成),然后,通过路线服务,我在谷歌地图上绘制路线。 我可以计算出该路线所需的燃气,驾驶员必须支付的通行费等等。
到目前为止工作正常。
现在我必须检查起点或终点是否是机场(我假设我必须检查地点类型),我不知道如何实现这一点。
我知道地方自动完成对象包含地点类型,我想知道当从自动填充中选择时,我可以将地点类型传递给隐藏字段,然后检查是否是合适的类型。 (或任何其他更合适的解决方案)
答案 0 :(得分:1)
现场预测自动完成可能有点令人困惑。我们来看看下面的例子。我想找到' aeroport El Prat Barcelona'
第一个预测的文字Aeroport, El Prat de Llobregat, Barcelona, Spain
的地点标识为ChIJO46GD4eepBIRIn5B25NbcNQ
。乍一看它似乎是机场,但当您检查响应中的类型时,您可以看到
"types":[
"transit_station","point_of_interest","establishment","geocode"
]
所以这不是机场,而是靠近机场的火车站,如下面的截图所示。
此时看起来你不能100%依赖自动完成提供的类型,因为你可以得到一些非常靠近机场的东西,比如分享机场的火车或公共汽车站。在名称中。
作为一种解决方法,如果有任何机场接近自动完成返回的坐标,我建议使用附近的场所API检查。但这需要两个额外的步骤:
解析地点ID以进行协调。例如。 https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJO46GD4eepBIRIn5B25NbcNQ&key=YOUR_API_KEY
将返回41.3042622,2.0733891
使用附近的搜索来确定是否存在半径范围内的机场,例如500米https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=41.3042622%2C2.0733891&radius=500&type=airport&key=YOUR_API_KEY
最后一个请求返回机场,如以下屏幕截图所示