- 完整地址(街道地址,公寓、套房、单元、楼宇、楼层)
- 门牌号码
- 城市
- 州/省/地区
- 邮编
- 国家
这三个项目是否足以在美国查找地址?或者需要更少或更多的信息?并且对于每个国家,这个问题的答案是否不同?此外,是否有可以用于此目的的服务、API 或库(例如 Google Maps 或 OpenStreetMap)?
很好的问题!
这三个项目就足以查找美国的地址吗?
不,抱歉,这三个项目只能将您缩小到大约数百个可能的地址。
对于每个国家,这个问题的答案是否都不同?
是的!从一个国家到另一个国家的邮政系统差异很大,用户对它们的期望也不同-例如,英国人不希望必须输入完整的地址。
对于英国、加拿大和澳大利亚,通常可以通过门牌号码和邮政编码找到一个地址。但是,不能保证这一点。可能会有子前提信息或商业信息需要与用户进行交互,以检查您是否拥有正确的地址。
一些国家(如法国)没有完整的前提数量覆盖范围。对于这些情况,您可以采用前提数量和邮政编码,但根据城镇的不同,您必须改变自己的行为方式,要么信任并接受输入,要么提示他们进行更正。
在计划工作流程时,另一个重要考虑因素是需要允许那些可能不知道自己邮政编码/邮政区号的人。虽然不经常发生,但有时人们刚刚搬家,或者偶尔房产的邮政编码/邮政区号会发生变化,因此在需要信息时保持灵活性非常重要。
是否有可以用于此目的的服务、API或库?
是的-有几个解决方案可提供获取全球地址的功能。Experian Data Quality(我的公司)提供一个托管或本地部署的解决方案,可实现此目的。
在这里试试-在右侧的“您想了解更多吗?”下面,您可以切换国家,提示会更新,如有需要将进行交互。
我只能回答有关美国地址的问题(我在SmartyStreets工作),但答案是否定的,这不起作用。
赞扬您改善用户体验的愿望。不幸的是,我不建议尝试这样做,原因如下:
美国邮政编码完整长度实际上为11位数字(带检查位共12位):
因此,在您的情况下:
因此,仅知道地址的这三个部分是不足够的。国家在那时几乎毫无用处,而邮政编码最多只能指定城市/地区。门牌号码可能会出现几十次,甚至几百次,具体取决于邮政编码的“大小”。(我在偏远地区长大,我们的门牌号码是唯一的,但这很少见。)
是的,这个问题的答案因国家而异,但对大多数发达国家来说这种推理是正确的。不发达国家的邮政系统没有这样的组织。
有没有这样的服务?如果您不希望用户浏览数十或数百个结果,那么就没有这样的服务。如果他们必须查看超过几个,那么最好让他们输入完整地址。
我前几天回答了一个非常类似的问题,您可能会发现它很有用。
既然我已经把末日降临在你的想法上,那么有没有替代方案呢?当然,我更喜欢SmartyStreets' autocomplete,它会建议地址,并在用户打字时将其地理位置接近于用户。我应该提到它是免费的。它实际上不会验证地址,直到用户完成或选择了其中之一的建议,但它确实减少了按键次数。
在这个用户体验方面,我建议将国家作为地址表单的第一个字段。这样,您可以根据他们选择的国家来修改表单的格式。如果您使用像LiveAddress这样的服务,您可以让用户在单个字段中以他们习惯的格式输入地址,而不是按照您的任意顺序跨多个文本框输入,因为LiveAddress可以解析他们的输入。我不知道有哪个国家的邮政编码与街道地址一一对应,除了新加坡。新加坡邮政编码 在这种特殊情况下,您可以使用邮政编码填写其它字段;在其他情况下,您可以推导出城市名称和街道地址,但不太可能得到门牌号。
示例1:(从邮政编码中推导完整的街道地址)
https://geocode.xyz/339696?geoit=xml
<geodata>
<latt>1.32035</latt>
<longt>103.87430</longt>
<elevation/>
<standard>
<stnumber>88</stnumber>
<addresst>88 GEYLANG BAHRU</addresst>
<postal>339696</postal>
<city>Singapore</city>
<prov>SG</prov>
<countryname>Singapore</countryname>
<confidence>0.5</confidence>
</standard>
</geodata>
示例2:(获取最常见的街道地址和城市名称的其他变体)
https://geocode.xyz/27777?region=DE&geoit=xml
<geodata>
<latt>53.06060</latt>
<longt>8.58388</longt>
<elevation/>
<standard>
<stnumber>20</stnumber>
<addresst>20 Bokenbusch</addresst>
<postal>27777</postal>
<city>Ganderlesee</city>
<prov>DE</prov>
<countryname>Germany</countryname>
<confidence>0.5</confidence>
</standard>
<alt>
<loc>
<city>Ganderkesee</city>
<latt>53.06868</latt>
<longt>8.57437</longt>
<cc>951</cc>
</loc>
<loc>
<city>Bremen</city>
<latt>53.07675</latt>
<longt>8.57559</longt>
<cc>172</cc>
</loc>
<loc>
<city>Schierbrok</city>
<latt>53.08639</latt>
<longt>8.58037</longt>
<cc>166</cc>
</loc>
"cc" 中的数字表示该城市有多少个街道地址共享相同的邮政编码。
祝你好运!