Scribble Maps Blog
Udviklere: Spar Google API-kreditter med Autocomplete
Der er mange vindere med Googles nye API-prissætning. Men hvis din app bruger hele pakken af kortfunktionalitet, og du har mange brugere, vil du måske opdage, at din pulje hurtigt svinder ind. To funktioner, der trækker direkte på din pulje og ikke er underlagt den daglige gratis kvote, er autocomplete og stedssøgning.
Hvis du bruger din Google-licens med Scribble Maps API'et, laver vi nogle af disse optimeringer ud af boksen, men hvis du bygger din egen tilpassede implementering direkte oven på Google Maps API'et, er der en simpel opdatering, du kan lave for at spare nogle autocomplete-kreditter.
Den standard autocomplete-funktionalitet vil sende en autocomplete-anmodning ved hver ændring i inputtet. Det er muligt at reducere mængden af brugte kreditter betydeligt ved at indsætte en timeout, når inputtet ændres.
Her er et meget simpelt eksempel.
Så hver gang en bruger begynder at skrive i inputtet, vil autocomplete ikke blive udløst, før der er en kortvarig forsinkelse. Forsinkelsen på 250ms kan reduceres for at få autocomplete til at køre oftere. Hvis brugeren hurtigt skriver "Toronto", vil der kun blive udført ét autocomplete-kald i stedet for 8, når brugeren tøver.
Vi oplever, at den tidsstyrede forsinkelse fungerer bedst. Et kritisk punkt i denne forbindelse er at sikre, at brugergrænsefladen indikerer, at der søges, mens de skriver. I vores tilfælde bruger vi en animeret spinner. På den måde vil den animerede spinner give brugeren en kort pause til at se resultaterne, hvis de skriver hurtigt og ikke ser resultater med det samme.
Det skal bemærkes, at implementering af dette er i overensstemmelse med deres nuværende brugsvilkår. Alt, hvad denne metode reelt gør, er at drosle mængden af udgående autocomplete-kald fra brugeren.
Hvis du bruger din Google-licens med Scribble Maps API'et, laver vi nogle af disse optimeringer ud af boksen, men hvis du bygger din egen tilpassede implementering direkte oven på Google Maps API'et, er der en simpel opdatering, du kan lave for at spare nogle autocomplete-kreditter.
Den standard autocomplete-funktionalitet vil sende en autocomplete-anmodning ved hver ændring i inputtet. Det er muligt at reducere mængden af brugte kreditter betydeligt ved at indsætte en timeout, når inputtet ændres.
Her er et meget simpelt eksempel.
var acTimeOut;
textSearchInput.onkeyup = function() {
clearTimeout(acTimeout);
acTimeout = setTimeout(function() {
//put auto-complete calls in here
}, 250);
}
Så hver gang en bruger begynder at skrive i inputtet, vil autocomplete ikke blive udløst, før der er en kortvarig forsinkelse. Forsinkelsen på 250ms kan reduceres for at få autocomplete til at køre oftere. Hvis brugeren hurtigt skriver "Toronto", vil der kun blive udført ét autocomplete-kald i stedet for 8, når brugeren tøver.
Vi oplever, at den tidsstyrede forsinkelse fungerer bedst. Et kritisk punkt i denne forbindelse er at sikre, at brugergrænsefladen indikerer, at der søges, mens de skriver. I vores tilfælde bruger vi en animeret spinner. På den måde vil den animerede spinner give brugeren en kort pause til at se resultaterne, hvis de skriver hurtigt og ikke ser resultater med det samme.
Det skal bemærkes, at implementering af dette er i overensstemmelse med deres nuværende brugsvilkår. Alt, hvad denne metode reelt gør, er at drosle mængden af udgående autocomplete-kald fra brugeren.