V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
guoyblala
V2EX  ›  程序员

如何做全球的地址校验呢?

  •  
  •   guoyblala · 73 天前 · 2213 次点击
    这是一个创建于 73 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们的业务是一个物流系统,我们需要对用户输入的地址进行校验合法性,目前对接的是谷歌的 maps.googleapis.com 接口,但是这个接口对小国家的支持性很差,至少 100 多个国家是不支持的,而我们业务目前是全球的,但优点是特别快,300ms 就能返回结果。 有大佬做过这种全球地址校验么?想咨询一下 下面是我的请求例子

    
    curl --location --request GET 'https://maps.googleapis.com/maps/api/geocode/json?address=3659200,ISRAEL&key=xxxxx' \
    --header 'User-Agent: Apifox/1.0.0 ( https://apifox.com)' \
    --header 'Accept: */*' \
    --header 'Host: maps.googleapis.com' \
    --header 'Connection: keep-alive'
    
    {
       "results": [
          {
             "address_components": [
                {
                   "long_name": "Israel",
                   "short_name": "IL",
                   "types": [
                      "country",
                      "political"
                   ]
                }
             ],
             "formatted_address": "Israel",
             "geometry": {
                "bounds": {
                   "northeast": {
                      "lat": 33.33280500000001,
                      "lng": 35.896244
                   },
                   "southwest": {
                      "lat": 29.47969999999999,
                      "lng": 34.2673436
                   }
                },
                "location": {
                   "lat": 31.046051,
                   "lng": 34.851612
                },
                "location_type": "APPROXIMATE",
                "viewport": {
                   "northeast": {
                      "lat": 33.33280500000001,
                      "lng": 35.896244
                   },
                   "southwest": {
                      "lat": 29.47969999999999,
                      "lng": 34.2673436
                   }
                }
             },
             "partial_match": true,
             "place_id": "ChIJi8mnMiRJABURuiw1EyBCa2o",
             "types": [
                "country",
                "political"
             ]
          }
       ],
       "status": "OK"
    }
    
    7 条回复    2025-08-19 14:33:42 +08:00
    ratazzi
        1
    ratazzi  
       73 天前
    全球做不到的,也就能验证个邮编
    Google 也有地址验证 api ,但好像也就美国数据比较好,其实就是 USPS 的

    如果自己做到话
    加拿大,澳大利亚也有数据
    欧洲也就 德国适合,英国验证个邮编也就行了
    还有些国家邮编都没有

    结论是做这个比做整个物流系统都复杂,更不可能做全球,还会遇到大量文字的坑
    clarkethan
        2
    clarkethan  
       73 天前
    我之前做了一个自用,基于 osm 和其他可以拿到的数据源,自己清洗提取,只能说,勉强能用,小点的国家,错误率很高,每周自动更新一次数据,更新数据的负担也不小
    guoyblala
        3
    guoyblala  
    OP
       73 天前
    @ratazzi 我现在接的这个谷歌 api ,大的国家数据都还可以,能通过 45 个,但剩下的 102 个小国家都不太行,以色列都不行。头疼
    guoyblala
        4
    guoyblala  
    OP
       73 天前
    @ratazzi 我其实就是想验证个邮编,但像以色列的邮编都无法验证过去
    ratazzi
        5
    ratazzi  
       73 天前
    做这个其实没人买账的,投入太大,实际下单的数据其实很糟糕的,客户下单频繁报错会骂人的,没人会为了能拦截几个错误地址买单
    daxiongz
        6
    daxiongz  
       73 天前
    手机号/邮箱这些更重要吧,可以联系到用户,地址错了就错了吧 ,还有手抖写错的
    guoyblala
        7
    guoyblala  
    OP
       69 天前
    @daxiongz 不行的,物流公司联系不到人,就会退回包裹,这个退回的费用,需要我们自己承担
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   977 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:03 · PVG 06:03 · LAX 15:03 · JFK 18:03
    ♥ Do have faith in what you're doing.