Scribble Maps Blog
Разработчикам: экономия кредитов Google API с помощью автозаполнения
Новая ценовая политика Google API принесла выгоду многим. Однако, если ваше приложение использует весь спектр картографических функций и у вас много пользователей, вы можете заметить, что ваш лимит начнет быстро сокращаться. Две функции, которые расходуют средства напрямую из вашего лимита и не подпадают под ежедневную бесплатную квоту, — это автозаполнение (autocomplete) и поиск мест (place search).
Если вы используете свою лицензию Google с Scribble Maps API, мы выполняем некоторые из этих оптимизаций автоматически, но если вы создаете собственную реализацию непосредственно поверх Google Maps API, есть простое обновление, которое поможет вам сэкономить кредиты на автозаполнение.
Стандартная функция автозаполнения отправляет запрос при каждом изменении вводимого текста. Можно значительно сократить количество используемых кредитов, установив задержку (timeout) при изменении ввода.
Вот очень простой пример.
Таким образом, каждый раз, когда пользователь начинает вводить текст, автозаполнение не сработает до тех пор, пока не возникнет небольшая пауза. Задержку в 250 мс можно уменьшить, чтобы автозаполнение срабатывало чаще. Если пользователь быстро введет «Toronto», будет выполнен только один запрос автозаполнения вместо 8, когда пользователь сделает паузу.
Мы считаем, что задержка по времени работает лучше всего. Важным моментом здесь является обеспечение того, чтобы пользовательский интерфейс показывал, что во время ввода текста выполняется поиск. В нашем случае мы используем анимированный индикатор загрузки (спиннер). Таким образом, если пользователь пишет быстро и не видит результатов, анимированный спиннер заставит его сделать достаточную паузу, чтобы увидеть результаты.
Следует отметить, что внедрение этого решения полностью соответствует текущим условиям использования. Этот метод, по сути, просто ограничивает частоту исходящих запросов автозаполнения от пользователя.
Если вы используете свою лицензию Google с Scribble Maps API, мы выполняем некоторые из этих оптимизаций автоматически, но если вы создаете собственную реализацию непосредственно поверх Google Maps API, есть простое обновление, которое поможет вам сэкономить кредиты на автозаполнение.
Стандартная функция автозаполнения отправляет запрос при каждом изменении вводимого текста. Можно значительно сократить количество используемых кредитов, установив задержку (timeout) при изменении ввода.
Вот очень простой пример.
var acTimeOut;
textSearchInput.onkeyup = function() {
clearTimeout(acTimeout);
acTimeout = setTimeout(function() {
//поместите вызовы автозаполнения сюда
}, 250);
}
Таким образом, каждый раз, когда пользователь начинает вводить текст, автозаполнение не сработает до тех пор, пока не возникнет небольшая пауза. Задержку в 250 мс можно уменьшить, чтобы автозаполнение срабатывало чаще. Если пользователь быстро введет «Toronto», будет выполнен только один запрос автозаполнения вместо 8, когда пользователь сделает паузу.
Мы считаем, что задержка по времени работает лучше всего. Важным моментом здесь является обеспечение того, чтобы пользовательский интерфейс показывал, что во время ввода текста выполняется поиск. В нашем случае мы используем анимированный индикатор загрузки (спиннер). Таким образом, если пользователь пишет быстро и не видит результатов, анимированный спиннер заставит его сделать достаточную паузу, чтобы увидеть результаты.
Следует отметить, что внедрение этого решения полностью соответствует текущим условиям использования. Этот метод, по сути, просто ограничивает частоту исходящих запросов автозаполнения от пользователя.