Web services 谷歌地图API V3地理编码API未返回状态
如果某个地址在英国,我需要找出该地址是否在“英格兰”、“威尔士”、“苏格兰”或“北爱尔兰” 我目前对谷歌地理编码API的请求返回了城市(例如“伦敦”)和国家(“英国”)——这两个对我来说都是无用的Web services 谷歌地图API V3地理编码API未返回状态,web-services,google-maps,google-maps-api-3,geocoding,Web Services,Google Maps,Google Maps Api 3,Geocoding,如果某个地址在英国,我需要找出该地址是否在“英格兰”、“威尔士”、“苏格兰”或“北爱尔兰” 我目前对谷歌地理编码API的请求返回了城市(例如“伦敦”)和国家(“英国”)——这两个对我来说都是无用的 是否有任何方法可以检索我需要的信息,或者需要不同的web服务?我不确定为什么地理编码响应在传递完整地址作为参数时不返回英国的管理区域级别1 然而,在您的情况下,我要做的是将城镇名称(而不是完整的地址)发送给地理编码器,后者将返回您需要的数据。这里有一些例子: 请注意,我已将该参数添加到查询中
是否有任何方法可以检索我需要的信息,或者需要不同的web服务?我不确定为什么地理编码响应在传递完整地址作为参数时不返回英国的管理区域级别1 然而,在您的情况下,我要做的是将城镇名称(而不是完整的地址)发送给地理编码器,后者将返回您需要的数据。这里有一些例子:
请注意,我已将该参数添加到查询中,因此如果您想在英国境外使用该参数,则需要对其进行更改。如果您的完整地址包含邮政编码,则可以通过邮政编码前缀确定,该前缀与邮政地区相关 北爱尔兰:英国电信
威尔士:LL、NP、CF、SA、CH、SY
苏格兰:AB、DD、FK、PA、DG、ZE、KA、G、EH、IV、KW
除海外领土的邮政编码外,所有其他国家都是英国 有关英国邮政编码的一般信息,请访问: 海外地区的邮政编码可以在维基百科上找到:
我不久前还没有遇到这些问题,但它们开始出现在一些丹麦邮政编码中。 不幸的是,我最后做的是两次查询谷歌。
我第一次发送邮政编码并从响应中提取“格式化的_地址”时,会对其进行URL编码,并在另一个对地理编码API的请求中使用它。在大多数情况下,这会返回“管理区域级别1”,但哥本哈根的一些邮政编码不会返回该值。只是补充一下,对于那些通过谷歌搜索到达这里的人(如我),我也遇到了类似的问题。上面的邮政编码列表非常有用,尽管缺少一些邮政编码字母。我浏览了谷歌API的结果,我相信我现在有了一个全面的列表 需要注意的一点是:南部/爱尔兰共和国在地图API中似乎没有返回邮政编码。我的解决方法是使用国家代码(API Country
short\u name
)
希望我的小片段能对一些人有所帮助。您可以很容易地将它自己调整为一个函数(我在另一个函数中使用它)
这里有一个Web服务可以做到这一点 …只需获取谷歌地图的GeoJson即可..通过单一或组合英国邮政编码(例如ZE1 0AE)、部门、地区、城市和地区边界进行查询 例如,英国地区“曼彻斯特” …/boundary/uk?district=曼彻斯特将为您提供以下GeoJson(该地区的所有扇区边界
似乎我特别需要访问的元素是行政区域级别1。奇怪的是,如果我将纬度/经度作为反向地理编码请求发送回去,我可以检索到这些信息!这是我能得到的最接近的信息。但是,结果充其量仍然不一致。例如,对的查询仍然排除
行政区域级别1
信息
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
}