Scribble Maps Blog
← All posts

Scribble Maps Blog

開発者向け:オートコンプリートによるGoogle APIクレジットの節約方法

Googleの新しいAPI価格設定により、多くの恩恵を受ける人がいます。しかし、アプリでマッピング機能一式を使用しており、多くのユーザーを抱えている場合、クレジットのプールが急速に減少していくことに気づくかもしれません。プールから直接消費され、毎日の無料枠の対象外となる2つの機能が、オートコンプリートとプレイス検索です。

Scribble Maps APIでGoogleライセンスを使用している場合、これらの最適化の一部は標準で適用されますが、Google Maps APIの上に直接独自のカスタム実装を構築している場合は、オートコンプリートのクレジットを節約するために実行できる簡単なアップデートがあります。

標準のオートコンプリート機能は、入力が変更されるたびにオートコンプリート要求を送信します。入力が変更されたときにタイムアウトを設定することで、使用されるクレジットの量を大幅に削減できます。

以下は非常に基本的な例です。

 var acTimeOut;  
 textSearchInput.onkeyup = function() {  
 clearTimeout(acTimeout);  
 acTimeout = setTimeout(function() {  
 //ここにオートコンプリートの呼び出しを記述します  
 }, 250);  
 }  

これにより、ユーザーが入力の入力を開始するたびに、一時的な遅延が発生するまでオートコンプリートは実行されません。250ミリ秒の遅延を短縮して、オートコンプリートの実行頻度を上げることもできます。ユーザーが「Toronto」と素早く入力した場合、ユーザーが手を止めたときに、8回ではなく1回だけオートコンプリートの呼び出しが実行されます。

私たちは、この時間差による遅延が最も効果的であると考えています。これにおける重要なポイントは、ユーザーが入力している間、検索が進行中であることをユーザーインターフェースで示すようにすることです。私たちの場合は、アニメーションのスピナーを使用しています。これにより、ユーザーが素早く入力していて結果が表示されない場合でも、アニメーションスピナーが表示されることで、結果を確認するのに十分な間を置くことができます。

なお、この実装は現在の利用規約に準拠しています。この方法が本質的に行っているのは、ユーザーからのアウトバウンドのオートコンプリート呼び出しの量を制限(スロットリング)することだけです。
← All posts