应用场景

构建按距离排序的门店查找工具

大多数门店查找工具只是披着地图外衣的列表。顾客先选一个州,再选一个城市,然后在一份按字母排序、与哪家门店实际最近毫无关系的列表中滚动。一家拥有几十家门店的家居用品连锁店认为这完全本末倒置,于是围绕距离重建了这个工具。

重建从输入开始。新的查找工具不再要求顾客从下拉菜单中选择,而是让他们开始输入地址或街区名称,并在输入过程中使用 /v1/autocomplete 提供建议。该端点接收不完整的地址,返回专为这类实时搜索框设计的候选匹配,因此输入“Oak”的顾客会得到一份简短的真实街道和地名列表供选择,而不必输入完整地址后再祈祷它能与门店数据库中的某条记录匹配。

当顾客选择了一条建议或允许页面使用其大致位置后,连锁店还需要一样东西:以坐标表示的起点。对于输入地址的顾客,起点来自通过 /v1/forward 对所选建议进行地理编码,该端点会为给定地址返回带有纬度和经度字段的位置匹配。对于什么都没有输入的顾客,网站则退而使用 /v1/ip,它读取访客的 IP 地址并返回坐标以及城市和地区,无需索取任何信息就能为查找工具提供一个合理的起点。

门店列表本身通过一次批量请求完成了地理编码,因为批量请求中每个门店地址计为一个计费项。每家门店的坐标都存档之后,排序就变成了算术:计算顾客所在点到每家门店的距离,排序,显示最近的五家。没有下拉菜单,没有按字母顺序的滚动,也不用猜测某家门店可能被列在附近哪个城镇之下。

连锁店让这个工具如实对待自己所能承诺的内容。由于正向地理编码返回的是与输入内容相符的匹配,而不是保证该地址完全按输入的样子存在,查找工具总是在排序列表旁附上一个确认步骤,让顾客在建议的位置不太准确时调整起点。这个小小的检查比排序逻辑的任何部分都重要,因为起点错误会让再完美的距离计算也毫无用处。

该查找工具的流量适中,自动补全和地理编码加起来每月几千次查询,完全在 My Geocode 密钥附带的每天免费配额之内。连锁店从来不需要在日常中考虑定价模式,因为门店查找工具的普通零售流量很少会达到预付额度或 Unlimited 密钥更划算的程度,但知道还有按每次请求 €0.0001 计费的余量,意味着一次营销推广或新店开业公告不会造成任何问题。

门店查找工具是个小功能,但它往往是顾客决定开车前往某处之前的最后一步,排序是否正确决定了哪家门店会迎来这次到访。两个端点的详细信息(包括字段结构和速率限制)请参阅 /docs/address-autocomplete/、/docs/forward-geocoding/ 和 /docs/rate-limits/。