Scribble Maps Blog
توسعهدهندگان: صرفهجویی در اعتبار API گوگل با استفاده از تکمیل خودکار (Autocomplete)
با قیمتگذاری جدید API گوگل، برندگان زیادی وجود دارند. با این حال، اگر اپلیکیشن شما از کل مجموعه قابلیتهای نقشهبرداری استفاده میکند و کاربران زیادی دارید، ممکن است متوجه شوید که سهمیه اعتباری شما به سرعت در حال کاهش است. دو قابلیتی که مستقیماً از سهمیه شما کسر میکنند و مشمول سهمیه رایگان روزانه نیستند، تکمیل خودکار (autocomplete) و جستجوی مکان (place search) هستند.
اگر از لایسنس گوگل خود در API اسکریبل مپس استفاده کنید، ما برخی از این بهینهسازیها را به صورت پیشفرض انجام میدهیم، اما اگر در حال ساخت پیادهسازی سفارشی خود مستقیماً روی API گوگل مپس هستید، یک بهروزرسانی ساده وجود دارد که میتوانید برای صرفهجویی در اعتبارات تکمیل خودکار انجام دهید.
قابلیت استاندارد تکمیل خودکار با هر تغییر در ورودی، یک درخواست تکمیل خودکار ارسال میکند. این امکان وجود دارد که با قرار دادن یک تایماوت در هنگام تغییر ورودی، میزان اعتبار مصرفی را به میزان قابل توجهی کاهش داد.
در اینجا یک مثال بسیار ساده آورده شده است.
بنابراین هر بار که کاربر شروع به تایپ در ورودی میکند، تکمیل خودکار تا زمانی که یک تاخیر کوتاه رخ ندهد، اجرا نخواهد شد. تاخیر ۲۵۰ میلیثانیهای را میتوان کاهش داد تا تکمیل خودکار با دفعات بیشتری اجرا شود. اگر کاربر به سرعت کلمه "Toronto" را تایپ کند، به جای ۸ بار، تنها یک درخواست تکمیل خودکار در زمان مکث کاربر اجرا خواهد شد.
ما متوجه شدهایم که تاخیر زمانبندیشده بهترین عملکرد را دارد. یک نکته حیاتی در این زمینه این است که مطمئن شوید رابط کاربری نشان میدهد که همزمان با تایپ کردن، جستجویی در حال انجام است. در مورد ما، ما از یک اسپینر متحرک استفاده میکنیم. به این ترتیب، اگر کاربر سریع تایپ کند و نتایج را نبیند، اسپینر متحرک به او مکث کافی برای دیدن نتایج را میدهد.
لازم به ذکر است که پیادهسازی این روش با شرایط استفاده فعلی آنها مطابقت دارد. تمام کاری که این روش اساساً انجام میدهد، محدود کردن تعداد درخواستهای خروجی تکمیل خودکار از سمت کاربر است.
اگر از لایسنس گوگل خود در API اسکریبل مپس استفاده کنید، ما برخی از این بهینهسازیها را به صورت پیشفرض انجام میدهیم، اما اگر در حال ساخت پیادهسازی سفارشی خود مستقیماً روی API گوگل مپس هستید، یک بهروزرسانی ساده وجود دارد که میتوانید برای صرفهجویی در اعتبارات تکمیل خودکار انجام دهید.
قابلیت استاندارد تکمیل خودکار با هر تغییر در ورودی، یک درخواست تکمیل خودکار ارسال میکند. این امکان وجود دارد که با قرار دادن یک تایماوت در هنگام تغییر ورودی، میزان اعتبار مصرفی را به میزان قابل توجهی کاهش داد.
در اینجا یک مثال بسیار ساده آورده شده است.
var acTimeOut;
textSearchInput.onkeyup = function() {
clearTimeout(acTimeout);
acTimeout = setTimeout(function() {
//put auto-complete calls in here
}, 250);
}
بنابراین هر بار که کاربر شروع به تایپ در ورودی میکند، تکمیل خودکار تا زمانی که یک تاخیر کوتاه رخ ندهد، اجرا نخواهد شد. تاخیر ۲۵۰ میلیثانیهای را میتوان کاهش داد تا تکمیل خودکار با دفعات بیشتری اجرا شود. اگر کاربر به سرعت کلمه "Toronto" را تایپ کند، به جای ۸ بار، تنها یک درخواست تکمیل خودکار در زمان مکث کاربر اجرا خواهد شد.
ما متوجه شدهایم که تاخیر زمانبندیشده بهترین عملکرد را دارد. یک نکته حیاتی در این زمینه این است که مطمئن شوید رابط کاربری نشان میدهد که همزمان با تایپ کردن، جستجویی در حال انجام است. در مورد ما، ما از یک اسپینر متحرک استفاده میکنیم. به این ترتیب، اگر کاربر سریع تایپ کند و نتایج را نبیند، اسپینر متحرک به او مکث کافی برای دیدن نتایج را میدهد.
لازم به ذکر است که پیادهسازی این روش با شرایط استفاده فعلی آنها مطابقت دارد. تمام کاری که این روش اساساً انجام میدهد، محدود کردن تعداد درخواستهای خروجی تکمیل خودکار از سمت کاربر است.