【发布时间】:2021-10-27 18:56:14
【问题描述】:
当我搜索机场时,我得到如下结果:
点击第一个结果“拉瓜迪亚机场 (LGA)”,但给了我这个地方结果:
{
"address_components": [
{
"long_name": "New York",
"short_name": "New York",
"types": [
"locality",
"political"
]
},
{
"long_name": "East Elmhurst",
"short_name": "East Elmhurst",
"types": [
"neighborhood",
"political"
]
},
{
"long_name": "Queens",
"short_name": "Queens",
"types": [
"sublocality_level_1",
"sublocality",
"political"
]
},
{
"long_name": "Queens County",
"short_name": "Queens County",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "New York",
"short_name": "NY",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
},
{
"long_name": "11371",
"short_name": "11371",
"types": [
"postal_code"
]
}
],
"formatted_address": "New York, Queens, NY 11371, USA",
"vicinity": "New York",
"html_attributions": []
}
“LaGuardia Airport”或“LGA”在结果中的任何位置。
如何获得地点的名称?
这是我的代码的要点:
const autocomplete = new gmaps.places.Autocomplete(addressInput, {}); // {types: ['address']}
autocomplete.setFields(['address_component','formatted_address','vicinity']);
autocomplete.addListener('place_changed', () => {
let place = autocomplete.getPlace();
if (place.address_components && place.address_components.length) {
console.log(JSON.stringify(place, null, 2))
}
}
【问题讨论】:
-
如果您仅在机场名称/代码之后,我建议您建立一个本地数据库/列表,其中包含您感兴趣的国家/地区的所有机场. 我有一个世界机场数据库,其中包含大约 35K 条记录,其中还包括小型机场。如果您不仅需要机场,还可以使用 Autocomplete Service 类(而不是小部件)混合您的本地结果与 Google 的其他建议。
-
@MrUpsidown 谢谢。我最终可能想要一个机场数据库,但现在我只想要地名。实际上在非机场也很高兴。
-
这取决于您的用例,但我的意思是,如果您使用 Autocomplete Service class 并构建自己的自动完成小部件,您可以轻松混合来自场所 API 和本地记录集的结果。这是一个demo,展示了如何在自动完成结果列表中包含 2 条自定义记录。基本示例,但您明白了。
标签: javascript google-maps-api-3