Scribble Maps Blog
מפתחים: חיסכון בקרדיטים של Google API באמצעות השלמה אוטומטית (Autocomplete)
ישנם מנצחים רבים עם תמחור ה-API החדש של גוגל. עם זאת, אם האפליקציה שלכם משתמשת בכל חבילת פונקציונליות המיפוי ויש לכם משתמשים רבים, אתם עלולים לגלות שמאגר הקרדיטים שלכם יתחיל להצטמצם במהירות. שתי פונקציות שימשכו ישירות מהמאגר שלכם ואינן כפופות למכסה החינמית היומית הן השלמה אוטומטית (autocomplete) וחיפוש מקומות (place search).
אם אתם משתמשים ברישיון הגוגל שלכם עם ה-API של Scribble Maps, אנו מבצעים חלק מהאופטימיזציות הללו ישירות מהקופסה, אך אם אתם בונים יישום מותאם אישית משלכם ישירות על גבי Google Maps API, ישנו עדכון פשוט שתוכלו לבצע כדי לחסוך לכם כמה קרדיטים של השלמה אוטומטית.
פונקציונליות ההשלמה האוטומטית הסטנדרטית תשלח בקשת השלמה אוטומטית עם כל שינוי בקלט. ניתן לצמצם את כמות הקרדיטים בשימוש באופן משמעותי על ידי הגדרת השהיה (timeout) כאשר הקלט משתנה.
הנה דוגמה בסיסית מאוד.
כך שבכל פעם שמשתמש מתחיל להקליד בקלט, ההשלמה האוטומטית לא תופעל עד שתהיה השהיה רגעית. ניתן להפחית את ההשהיה של 250 מילישניות כדי לגרום להשלמה האוטומטית לפעול לעיתים קרובות יותר. אם המשתמש מקליד במהירות "Toronto", תבוצע רק קריאת השלמה אוטומטית אחת במקום 8 כאשר המשתמש מהסס.
אנו מוצאים שההשהיה המתוזמנת עובדת בצורה הטובה ביותר. נקודה קריטית לכך היא לוודא שממשק המשתמש מציין שמתבצע חיפוש בזמן שהם מקלידים. במקרה שלנו אנו משתמשים בספינר מונפש. בדרך זו, אם המשתמש מקליד במהירות ואינו רואה תוצאות, הספינר המונפש ייתן לו מספיק שהות כדי לראות את התוצאות.
יש לציין כי יישום זה תואם לתנאי השימוש הנוכחיים שלהם. כל מה ששיטה זו עושה בעצם הוא ויסות (throttle) של כמות קריאות ההשלמה האוטומטית היוצאות מהמשתמש.
אם אתם משתמשים ברישיון הגוגל שלכם עם ה-API של Scribble Maps, אנו מבצעים חלק מהאופטימיזציות הללו ישירות מהקופסה, אך אם אתם בונים יישום מותאם אישית משלכם ישירות על גבי Google Maps API, ישנו עדכון פשוט שתוכלו לבצע כדי לחסוך לכם כמה קרדיטים של השלמה אוטומטית.
פונקציונליות ההשלמה האוטומטית הסטנדרטית תשלח בקשת השלמה אוטומטית עם כל שינוי בקלט. ניתן לצמצם את כמות הקרדיטים בשימוש באופן משמעותי על ידי הגדרת השהיה (timeout) כאשר הקלט משתנה.
הנה דוגמה בסיסית מאוד.
var acTimeOut;
textSearchInput.onkeyup = function() {
clearTimeout(acTimeout);
acTimeout = setTimeout(function() {
//put auto-complete calls in here
}, 250);
}
כך שבכל פעם שמשתמש מתחיל להקליד בקלט, ההשלמה האוטומטית לא תופעל עד שתהיה השהיה רגעית. ניתן להפחית את ההשהיה של 250 מילישניות כדי לגרום להשלמה האוטומטית לפעול לעיתים קרובות יותר. אם המשתמש מקליד במהירות "Toronto", תבוצע רק קריאת השלמה אוטומטית אחת במקום 8 כאשר המשתמש מהסס.
אנו מוצאים שההשהיה המתוזמנת עובדת בצורה הטובה ביותר. נקודה קריטית לכך היא לוודא שממשק המשתמש מציין שמתבצע חיפוש בזמן שהם מקלידים. במקרה שלנו אנו משתמשים בספינר מונפש. בדרך זו, אם המשתמש מקליד במהירות ואינו רואה תוצאות, הספינר המונפש ייתן לו מספיק שהות כדי לראות את התוצאות.
יש לציין כי יישום זה תואם לתנאי השימוש הנוכחיים שלהם. כל מה ששיטה זו עושה בעצם הוא ויסות (throttle) של כמות קריאות ההשלמה האוטומטית היוצאות מהמשתמש.