地址地理位置是一个难题。它需要对地址系统有深入的了解,并对不断变化的、真实的、混乱的场景做出反应。
例如,您可以获得美国邮政编码及其大致位置的数据库,但它只是一个快照。随着时间的推移,您会发现您的数据中会添加和丢失新的邮政编码,并且现有的邮政编码已经扩展到包括其他区域。您还会发现许多“不可定位”的邮政编码,例如用于向海外军队发送邮件的邮政编码。您甚至可以找到一个邮政编码,其地址位于两个不同的时区。
将国际问题付诸实施,您会发现各种极端情况。每个国家和地区都有自己的特殊规则和情况。
这是一个值得为服务提供商付费的问题。尝试以离线方式进行地理定位可能是可能的,但不建议这样做。
第二部分 - 弄清楚哪个时区去一个位置,也很混乱。但是协调起来稍微容易一些。Time Zone Boundary Builder是尝试这样做的主要开源项目。此处引用的大多数库都使用该数据。但即便如此,它也有更新并依赖于 Open Street Map 数据建立的边界。其中一些边界存在争议,因此谷歌、微软或其他公司的服务可能会给出不同的结果,因为它们的地图数据具有不同的边界。如果您关心这些事情,那么您可能希望针对不同的提供者测试一些边缘案例,看看您是否对结果感到满意。您可能会发现 TZBB 数据运行良好,或者您可能更喜欢其中一种在线解决方案。