如何借助Google Places API获取机场及对应航站楼信息?
实现机场航站楼展示的最优方案
核心思路:借助Place Details API补充航站楼数据
你当前基于Autocomplete筛选机场的逻辑可以保留,在此基础上通过Place Details API获取机场的完整结构化信息,这是获取航站楼数据最精准的方式,具体步骤如下:
1. 保留Autocomplete的机场筛选逻辑
继续使用Autocomplete的types参数指定"airport",确保返回结果均为机场类POI,同时获取每个结果的place_id。
2. 调用Place Details API提取航站楼信息
用第一步拿到的place_id作为参数调用Place Details API,请求时在fields参数中指定"address_components"和"name"——航站楼信息通常嵌套在address_components的"sublocality_level_1"或专属结构化字段中。
示例请求逻辑(伪代码):
// 假设已获取Autocomplete返回的placeId fetch(`https://maps.googleapis.com/maps/api/place/details/json?place_id=${placeId}&fields=address_components,name&key=YOUR_API_KEY`) .then(res => res.json()) .then(data => { // 筛选提取航站楼相关字段 const terminalList = data.result.address_components.filter(item => item.types.includes("sublocality_level_1") || item.types.includes("establishment") ).map(item => item.long_name); // 前端渲染航站楼信息 renderTerminalInfo(terminalList); });
3. 兜底处理无航站楼数据的情况
如果Place Details返回结果中没有明确的航站楼字段,直接展示机场名称,或显示「暂无航站楼信息」,避免空内容。
为什么不推荐Nearby Search?
Nearby Search的keyword和type组合无法适配全球机场的航站楼命名规则(不同地区命名差异极大,比如Terminal 1、T1、中文航站楼名称等),而Place Details直接获取机场的官方结构化数据,一致性和准确性远高于模糊搜索。
额外优化建议
- 缓存已查询过的
place_id对应的航站楼信息,避免重复调用API,降低开销。 - 若部分机场的航站楼信息未在Place Details中返回,可增加用户手动选择航站楼的输入框作为兜底方案。
内容的提问来源于stack exchange,提问作者Harsh Gupta
相关产品推荐
相关产品推荐

