在达到限制之前监控密钥用量
随时关注配额响应头,就能在请求真正被拒绝之前,提前知道何时即将达到限制。
“你们离我最近的网点有多远”是落地页可以直接回答的问题,不必让访客跳转到另一个地图自己去查。
获取访客在简单表单字段中输入的任何地址或邮政编码,并对其进行地理编码。
GET /v1/forward?q=350 Fifth Avenue, New York&limit=1{
"status": "ok",
"results": [
{"formatted": "350 Fifth Avenue, New York, NY", "lat": 40.7484, "lon": -73.9857, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "es234", "components": {}}
]
}拿到访客的坐标后,使用标准的半正矢公式,计算该点到您每个门店位置的直线距离;门店位置以固定坐标列表的形式保存在您自己的代码中。
for store in stores:
store.distance_km = haversine(store.lat, store.lon, 40.7484, -73.9857)按计算出的距离对门店列表排序,并显示最近的一家或最近的几家以及距离数值。由于这一切都在表单提交时于服务器端运行,因此不需要任何客户端脚本,页面只需在下一次加载时呈现结果。
与其只报告最近的一家门店,不如对完整列表排序并显示前三家,这样访客就有了真正的选择;当最近的门店营业时间或库存与稍远一点、访客实际更偏好的门店不同时,这一点尤其有用。这不会产生任何额外成本,因为排序使用的是同一个请求返回的同一组坐标。
如果访客输入的地址返回的置信度分数较低,请先把格式化后的结果展示给访客确认,再进行距离计算,而不是根据对其意图的猜测自信地报出一个距离。
如果查询解析出的精度远比访客可能想要的粗略,例如仅有城市或地区名称并匹配到 “locality” 类型的结果,请不要在未先提醒访客的情况下就进行距离计算。从市中心而不是访客实际所在街道算出的距离,可能在任一方向上偏差数公里,足以改变哪家门店看起来最近。在报出一个听起来很确定的距离之前先检查精度字段,可以避免把粗略估算当作精确数值呈现。
当输入确实有歧义时(例如某个街道名称存在于多个城镇),在地理编码请求中将 limit 设为大于 1 的值,会返回多个候选匹配。展示这份简短的列表,让访客在距离计算之前选出正确的一项,比默默采用恰好排在第一位的候选结果要好。
每次计算都是一次地理编码请求,与您拿结果坐标对比多少家门店无关,因为一旦获得访客的坐标,门店列表本身不再需要任何额外的 API 调用。即使落地页流量可观,该功能也只是每次访客计算使用一次请求,完全在每个密钥附带的每天 2,500 次免费请求之内。
这样的距离计算器直接在页面上回答了一个具体而常见的问题,而不是把访客推到别处去查。完整的请求参数请参阅正向地理编码文档。