Google Maps API查询机场时无法获取场所名称问题求助
你当前获取不到场所名称的核心原因是setFields方法没有主动声明要返回name字段,谷歌地图Places API遵循「只返回你请求的字段」规则,你当前仅配置了address_component、formatted_address、vicinity三个返回字段,自然不会包含机场名称相关内容。
解决方案
- 修改
setFields配置,新增name字段,场所的官方名称(包含LGA标识)会存储在该字段中 - 如果你需要仅搜索机场类场所,可在Autocomplete初始化时添加
types: ['airport']配置,过滤无关结果;注意不要设置types: ['address'],该配置只会返回民用地址类结果,会过滤掉机场、商场这类POI场所。
修改后参考代码:
const autocomplete = new gmaps.places.Autocomplete(addressInput, { types: ['airport'] // 按需配置:仅搜机场可保留,搜所有POI改为['establishment'],不需要过滤则留空 }); // 新增name字段到返回字段列表 autocomplete.setFields(['address_component','formatted_address','vicinity', 'name']); autocomplete.addListener('place_changed', () => { let place = autocomplete.getPlace(); // 直接从place.name中获取场所名称 console.log('场所名称:', place.name); if (place.address_components && place.address_components.length) { console.log(JSON.stringify(place, null, 2)) } });
修改后返回结果会新增对应名称字段,示例如下:
{ "name": "LaGuardia Airport (LGA)", // 其余原有字段保持不变 "address_components": [...], "formatted_address": "New York, Queens, NY 11371, USA", ... }
内容的提问来源于stack exchange,提问作者mpen
相关产品推荐
相关产品推荐

