Google Maps (Reverse) Geocoding API 应该只显示 Cityname

Posted

技术标签:

【中文标题】Google Maps (Reverse) Geocoding API 应该只显示 Cityname【英文标题】:Google Maps (Reverse) Geocoding API should display only Cityname 【发布时间】:2017-04-22 14:41:20 【问题描述】:

我正在使用 Google Maps GeolocationAPI 来检索给定坐标的城市名称(这称为反向地理定位)。文档可用here

我用 jquery 发送一个 post 请求,并在我的脚本中获取一个 JSON 格式的对象,它的这个数组:locationName[]

对于某些坐标,我使用以下方法成功显示了城市名称:

locationName[0].address_components[0].long_name;

但对于某些坐标,城市名称位于

locationName[0].address_components[1].long_name;

甚至在

locationName[0].address_components[3].long_name;

另外,我想显示市区(如果它可用于给定坐标,否则我只想显示城市名称)

如何确定数组中的哪个字段是城市名称,以及如何确定一个市区是否可用,如果可以,它在哪个字段中?

【问题讨论】:

【参考方案1】:

这个问题基本上是关于检查对象在数组属性中的特定值,如果在数组中找到该值,则返回该对象。这是您可以做到的一种方法-

var desiredLocationDescription;
var addressComponentArray = [];
var typeName = "locality";


for (var i = 0; i < locationName[0].address_components.length; i++)
    addressComponentArray.push(locationName[0].address_components[i])


for (var i = 0; i < addressComponentArray.length; i++)
    if (addressComponentArray[i].types.includes(typeName))
        desiredLocationDescription = addressComponentArray[i];
        break;
    


console.log(desiredLocationDescription.long_name)

由于城市名称存储在带有type: ["locality", "political"] 的对象中,因此请查看对象数组,直到找到其类型中带有“locality”的对象。

【讨论】:

很好,这只给出了城市名称:) 就获得地区而言,您可以使用相同的策略。您需要知道 API 的类型名称,然后您可以检查它是否存在,如果存在,请相应地设置变量。 我将仔细查看文档以获取市区类型的名称。非常感谢这个快速的解决方案! 没问题。我喜欢地图工具! 对于那些感兴趣的人来说,市区类型的名称是“sublocality”,在那里你也可以说sublocality_level_1到sublocality_level_5。每个地方级别都是一个民事实体。数字越大表示地理区域越小。

以上是关于Google Maps (Reverse) Geocoding API 应该只显示 Cityname的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps (Reverse) Geocoding API 应该只显示 Cityname

如何获得当前位置?

请教GOOGLE MAP API国内能访问的地址

两个 GEO 位置之间的距离 [重复]

NativeScript:@nativescript/geolocation 与 nativescript-google-maps-sdk

javascript Yandex.Maps路由与geo