Google Maps API V3地理编码API未返回州名

3

如果地址在英国,我需要确定该地址是否位于“英格兰”、“威尔士”、“苏格兰”或“北爱尔兰”,并且地址格式良好。

我的当前请求Google地理编码API返回城市(例如“伦敦”)和国家(“英国”),这两者对我都没有用。

是否有任何方法可以检索到我需要的信息,或者需要使用不同的Web服务?


看起来我特别需要访问的元素是administrative_area_level_1。奇怪的是,如果我将纬度/经度作为反向地理编码请求发送回去,我可以检索到这些信息! - Consultant101
5个回答

1

我不确定为什么地理编码响应在传递完整地址作为参数时,没有返回英国的administrative_area_level_1。

然而,在您的情况下,我会发送城镇名称(而不是完整地址)到地理编码器,它将返回您需要的数据。以下是一些示例:

请注意,我已将区域偏好参数添加到查询中,因此如果您想在英国以外使用它,则需要更改它。


这是我能做到的最接近的翻译。然而,结果仍然是最好不一致的。例如,查询 伦敦 仍然排除了 administrative_area_level_1 信息。 - Consultant101

1
如果您的完整地址包含邮政编码,则可以从邮政编码前缀确定所属邮政区。
北爱尔兰:BT
威尔士:LL,NP,CF,SA,CH,SY
苏格兰:AB,DD,FK,PA,DG,ZE,KA,G,EH,IV,KW
除海外领土邮政编码外,所有其他邮政编码均为英格兰。
您可以从以下网站获取有关英国邮政编码的一般信息:

http://www.townscountiespostcodes.co.uk/

海外领土的邮政编码可以在维基百科上找到: http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom

0

补充一点,对于那些通过谷歌搜索(比如我)来到这里的人,我遇到了类似的问题。Andrew - OpenGeoCode提供的邮政编码列表非常有帮助,尽管少了一些邮政编码字母。我查阅了谷歌API的结果,现在我相信我已经有了一个全面的列表。

需要注意的一点是:爱尔兰南部/共和国似乎不能在地图API中返回邮政编码。我的解决方法是使用国家代码(API国家short_name)。

希望我的小片段能够帮助一些人。您可以很容易地将其改编成独立的函数(我在另一个函数中使用它)。

    if($('#postcode').val().match(/^(BT)/)){
        $('#country').val("Northern Ireland");
    } else if($('#postcode').val().match(/^(LL)|^(NP)|^(CF)|^(SA)|^(CH)|^(SY)|^(HR)|^(LD)/)){
        $('#country').val("Wales");
    } else if($('#postcode').val().match(/^(AB)|^(DD)|^(FK)|^(PA)|^(DG)|^(ZE)|^(KA)|^(G)|^(EH)|^(IV)|^(KW)|^(PH)|^(KA)|^(TD)|^(ML)|^(HS)/)){
        $('#country').val("Scotland");
    } else if($('#countryCode').val() == "IE"){
        $('#country').val("Republic of Ireland");
    } else if($('#countryCode').val() == "GB"){
        $('#country').val("England");
    }else{  
        $('#country').val(addressComponents.country); //if not UK postcode, return whatever Google gets for Country Name
    }

0
这是一个能够做到这一点的 Web 服务。

https://www.mashape.com/vanitysoft/uk-boundaries-io

..简单地说,它允许获取适用于Google地图的GeoJson数据..可以通过单个或组合的英国邮政编码(例如ZE1 0AE)、区域、行政区、城市和选区边界进行查询

例如,对于英国的一个行政区"曼彻斯特" .../boundary/uk?district=曼彻斯特 将会得到以下GeoJson数据(该行政区内所有区域边界)...

enter image description here


0

我之前没有这些问题,但是它们开始出现在一些丹麦邮政编码中。 不幸的是,我的解决方法是查询两次谷歌。 第一次我发送邮政编码并从响应中提取“formatted_address”,对其进行urlencode,并在另一个请求中使用geocode API。这在大多数情况下会返回“administrative_area_level_1”,但是对于哥本哈根的某些邮政编码来说却不是这样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接