迁移

从 Mapbox Geocoding 迁移

Mapbox Geocoding 以 GeoJSON FeatureCollection 的形式返回结果,这是一个有意为之的选择,使输出可以直接交给 Mapbox GL 或任何支持 GeoJSON 的地图库。每个 feature 都带有一对 center 坐标、一个 place_name 字符串,以及一个描述所属地区、国家和邮政编码的 context 数组。身份验证使用访问令牌,通常作为查询参数传递,许多团队还在网页地图瓦片和地理编码调用中使用同一个令牌。

在迁移之前值得注意这种一个令牌两种用途的情况,因为这意味着在应用代码中,地理编码调用和地图渲染调用往往比最初看起来纠缠得更深。把它们干净地分开,让地理编码请求可以指向新主机,而地图瓦片保持原样,通常是要做的第一个真正的决定。

My Geocode 的 Mapbox 兼容主机复现了 FeatureCollection 结构,包括 centerplace_namecontext 字段,因此围绕 response.features[0].center 编写的代码在切换后仍可正常工作。响应中只有版权、条款和隐私文字与 Mapbox 自己的不同。字段参考见 /compatibility/mapbox/

给进行这次迁移的团队的几点实用建议:

  • 如果您的前端直接从客户端 JavaScript 调用 Mapbox Geocoding,无论最终选择哪家服务商,都值得考虑先把这个调用移到服务器端代理,因为这样可以让 API 密钥不出现在浏览器代码中
  • 身份验证接受 X-API-Key 请求头、Authorization: Bearer 请求头、HTTP Basic 认证或查询参数,因此您现有的 Mapbox 客户端无论用哪种方式发送访问令牌,都应当能对应到其中一种
  • 如果您依赖 Mapbox 的 proximity 或边界框参数让结果偏向某个区域,请先查阅兼容主机文档中对应的参数名称,不要假定它们原样沿用

价格上去掉了许多地图平台随用量档位增长的令牌分级结构。这里完全不用密钥即可每天免费发出 2,500 次请求,每个密钥还各自拥有每天 2,500 次免费请求,按网络计算。超出之后,按每次请求 €0.0001 使用预付额度,或使用每月 €50 的 Unlimited 密钥,所有端点(包括这个兼容主机)价格相同。

由于 Mapbox 常常与地图瓦片和静态地图图片一起使用,而不只是用于地理编码,因此有必要明确范围:My Geocode 是一个地理编码、IP、时区、海拔和邮政编码查询 API,而不是瓦片或底图服务商。保留现有地图渲染、只把地址查询迁移到新主机的团队,应当预期在一段时间内同时使用两家服务商,一家提供瓦片,一家提供地理编码,这是一种正常且稳定的分工方式,而不是需要尽快结束的临时状态。