如果您有完整的邮政编码,只想使用前缀部分,请删除最后三个字符并使用剩余的部分。所有邮政编码都以数字-字母-字母的模式结尾,因此删除这些字符将给出前缀部分;任何不符合该模式或在删除该子字符串后未能提供有效前缀部分的字符串均不是有效的邮政编码。(
来源)
如果您愿意承担一个外部(基于互联网的)依赖项,您可以考虑使用类似
https://postcodes.io的东西,特别是该API的outcodes部分。我与postcodes.io没有任何关系;我只是在Google之后发现它。
根据文档,/outcodes将返回:
- 邮政编码前缀
- 东向坐标
- 北向坐标
- 代码下的行政县
- 代码下的区/自治市
- 代码下的行政/选区
- WGS84经度
- WGS84纬度
- 代码包含的国家
- 代码中的教区/社区
作为参考,对/outcodes/TA1的调用返回:
{
"status": 200,
"result": {
"outcode": "TA1",
"longitude": -3.10297767924529,
"latitude": 51.0133987332761,
"northings": 124359,
"eastings": 322721,
"admin_district": [
"Taunton Deane"
],
"parish": [
"Taunton Deane, unparished area",
"Bishop's Hull",
"West Monkton",
"Trull",
"Comeytrowe"
],
"admin_county": [
"Somerset"
],
"admin_ward": [
"Taunton Halcon",
"Bishop's Hull",
"Taunton Lyngford",
"Taunton Eastgate",
"West Monkton",
"Taunton Manor and Wilton",
"Taunton Fairwater",
"Taunton Killams and Mountfield",
"Trull",
"Comeytrowe",
"Taunton Blackbrook and Holway"
],
"country": [
"England"
]
}
}
如果您拥有完整的邮编,
/postcodes
终端将返回更详细的信息,但我不会在此包含,但它包括单独的outcode和incode字段。
当然,我建议缓存对远程API的任何调用结果。
TR21 1AB
,你想匹配Taunton
还是Taunton X
?同样地,邮政编码BT1 1AB
应该如何知道要匹配Belfast
而不是Birmingham
? - Jamiec