Scribble Maps Blog
Programiści: Oszczędzanie kredytów Google API dzięki Autocomplete
Nowy cennik API Google ma wielu beneficjentów. Jeśli jednak Twoja aplikacja korzysta z pełnego pakietu funkcji mapowania i masz wielu użytkowników, możesz zauważyć, że Twoja pula środków zacznie szybko maleć. Dwiema funkcjami, które bezpośrednio uszczuplają Twoją pulę i nie podlegają dziennemu darmowemu limitowi, są autouzupełnianie (autocomplete) i wyszukiwanie miejsc (place search).
Jeśli korzystasz z własnej licencji Google w ramach Scribble Maps API, wykonujemy część tych optymalizacji automatycznie, ale jeśli budujesz własną, niestandardową implementację bezpośrednio na bazie Google Maps API, istnieje prosta modyfikacja, którą możesz wprowadzić, aby zaoszczędzić nieco kredytów autouzupełniania.
Wyszukiwanie standardowe z funkcją autouzupełniania wysyła żądanie przy każdej zmianie w polu wprowadzania tekstu. Można znacznie zmniejszyć liczbę zużywanych kredytów, wprowadzając opóźnienie (timeout) przy zmianie wpisywanego tekstu.
Oto bardzo prosty przykład.
Dzięki temu za każdym razem, gdy użytkownik zaczyna pisać w polu tekstowym, autouzupełnianie nie zostanie wywołane, dopóki nie nastąpi chwilowa przerwa. Opóźnienie wynoszące 250 ms można zmniejszyć, aby autouzupełnianie reagowało częściej. Jeśli użytkownik szybko wpisze „Toronto”, wykonane zostanie tylko jedno wywołanie autouzupełniania zamiast 8, gdy użytkownik na chwilę się zatrzyma.
Uważamy, że opóźnienie czasowe sprawdza się najlepiej. Kluczowym elementem jest upewnienie się, że interfejs użytkownika sygnalizuje trwające wyszukiwanie podczas pisania. W naszym przypadku używamy animowanej ikony ładowania (spinnera). W ten sposób, jeśli użytkownik pisze szybko i nie widzi od razu wyników, animowany spinner skłoni go do chwilowego zatrzymania się, co pozwoli na wyświetlenie wyników.
Warto zauważyć, że wdrożenie tego rozwiązania jest zgodne z aktualnymi warunkami korzystania z usługi. Metoda ta w zasadzie ogranicza jedynie liczbę wychodzących wywołań autouzupełniania generowanych przez użytkownika.
Jeśli korzystasz z własnej licencji Google w ramach Scribble Maps API, wykonujemy część tych optymalizacji automatycznie, ale jeśli budujesz własną, niestandardową implementację bezpośrednio na bazie Google Maps API, istnieje prosta modyfikacja, którą możesz wprowadzić, aby zaoszczędzić nieco kredytów autouzupełniania.
Wyszukiwanie standardowe z funkcją autouzupełniania wysyła żądanie przy każdej zmianie w polu wprowadzania tekstu. Można znacznie zmniejszyć liczbę zużywanych kredytów, wprowadzając opóźnienie (timeout) przy zmianie wpisywanego tekstu.
Oto bardzo prosty przykład.
var acTimeOut;
textSearchInput.onkeyup = function() {
clearTimeout(acTimeout);
acTimeout = setTimeout(function() {
//tutaj umieść wywołania autouzupełniania
}, 250);
}
Dzięki temu za każdym razem, gdy użytkownik zaczyna pisać w polu tekstowym, autouzupełnianie nie zostanie wywołane, dopóki nie nastąpi chwilowa przerwa. Opóźnienie wynoszące 250 ms można zmniejszyć, aby autouzupełnianie reagowało częściej. Jeśli użytkownik szybko wpisze „Toronto”, wykonane zostanie tylko jedno wywołanie autouzupełniania zamiast 8, gdy użytkownik na chwilę się zatrzyma.
Uważamy, że opóźnienie czasowe sprawdza się najlepiej. Kluczowym elementem jest upewnienie się, że interfejs użytkownika sygnalizuje trwające wyszukiwanie podczas pisania. W naszym przypadku używamy animowanej ikony ładowania (spinnera). W ten sposób, jeśli użytkownik pisze szybko i nie widzi od razu wyników, animowany spinner skłoni go do chwilowego zatrzymania się, co pozwoli na wyświetlenie wyników.
Warto zauważyć, że wdrożenie tego rozwiązania jest zgodne z aktualnymi warunkami korzystania z usługi. Metoda ta w zasadzie ogranicza jedynie liczbę wychodzących wywołań autouzupełniania generowanych przez użytkownika.