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
NativeScript:@nativescript/geolocation 与 nativescript-google-maps-sdk