Scribble Maps Blog
← All posts

Scribble Maps Blog

开发者:通过自动完成(Autocomplete)节省 Google API 额度

Google 的新 API 定价让许多人受益。然而,如果您的应用正在使用整套地图功能,并且您拥有大量用户,您可能会发现您的额度池开始快速减少。有两个会直接消耗您额度池且不受每日免费配额限制的功能,那就是自动完成(autocomplete)和地点搜索。

如果您在 Scribble Maps API 中使用您的 Google 许可证,我们开箱即用地进行了一些此类优化,但如果您是直接在 Google Maps API 之上构建自己的自定义实现,您可以进行一个简单的更新来节省一些自动完成额度。

标准的自动完成功能会在输入每次发生变化时发送一个自动完成请求。通过在输入变化时设置一个超时,可以显著减少所使用的额度。

这是一个非常基础的示例。

 var acTimeOut;  
 textSearchInput.onkeyup = function() {  
 clearTimeout(acTimeout);  
 acTimeout = setTimeout(function() {  
 //将自动完成调用放在这里  
 }, 250);  
 }  

因此,每当用户开始在输入框中输入时,自动完成不会立即触发,直到出现短暂的延迟。可以缩短 250 毫秒的延迟以使自动完成触发得更频繁。如果用户快速输入“Toronto”,则只会执行一次自动完成调用,而不是在用户犹豫时执行 8 次。

我们发现定时延迟的效果最好。对此至关重要的一点是,要确保用户界面在用户输入时指示正在进行搜索。在我们的案例中,我们使用了一个动画加载器(spinner)。这样,如果用户输入速度很快且没有看到结果,动画加载器会给他们足够的停顿时间来查看结果。

需要注意的是,实施此方法符合他们当前的使用条款。这种方法本质上只是限制了来自用户的出站自动完成调用量。
← All posts