Scribble Maps Blog
ڈویلپرز: آٹو کمپلیٹ کے ذریعے گوگل API کریڈٹس بچانا
گوگل کی نئی API قیمتوں کے ساتھ بہت سے لوگوں کو فائدہ ہوا ہے۔ تاہم، اگر آپ کی ایپ میپنگ کی تمام خصوصیات کا استعمال کر رہی ہے اور آپ کے صارفین کی تعداد زیادہ ہے تو آپ دیکھیں گے کہ آپ کا کریڈٹ پول تیزی سے کم ہونا شروع ہو جائے گا۔ دو فنکشنز جو براہ راست آپ کے پول سے کریڈٹ استعمال کرتے ہیں اور روزانہ کے مفت کوٹے کے تابع نہیں ہیں، وہ آٹو کمپلیٹ اور پلیس سرچ ہیں۔
اگر آپ Scribble Maps API کے ساتھ اپنا گوگل لائسنس استعمال کرتے ہیں تو ہم یہ کچھ آپٹیمائزیشنز پہلے سے ہی فراہم کرتے ہیں، لیکن اگر آپ گوگل میپس API کے بالکل اوپر اپنی مرضی کا کسٹم سیٹ اپ بنا رہے ہیں، تو ایک آسان اپ ڈیٹ ہے جو آپ آٹو کمپلیٹ کریڈٹس بچانے کے لیے کر سکتے ہیں۔
معیاری آٹو کمپلیٹ فنکشنلٹی ان پٹ میں ہر تبدیلی کے ساتھ ایک آٹو کمپلیٹ درخواست بھیجتی ہے۔ ان پٹ تبدیل ہونے پر ٹائم آؤٹ لگا کر استعمال ہونے والے کریڈٹس کی مقدار کو نمایاں طور پر کم کرنا ممکن ہے۔
یہاں ایک بہت ہی بنیادی مثال ہے۔
لہذا جب بھی کوئی صارف ان پٹ میں ٹائپ کرنا شروع کرے گا تو آٹو کمپلیٹ اس وقت تک فعال نہیں ہوگا جب تک کہ ایک لمحاتی تاخیر نہ ہو۔ آٹو کمپلیٹ کو زیادہ تیزی سے فعال کرنے کے لیے 250ms کی تاخیر کو کم کیا جا سکتا ہے۔ اگر صارف تیزی سے "Toronto" ٹائپ کرتا ہے، تو صارف کے رکنے پر 8 کے بجائے صرف ایک آٹو کمپلیٹ کال کی جائے گی۔
ہمیں معلوم ہوا ہے کہ وقت کی تاخیر (timed delay) سب سے بہتر کام کرتی ہے۔ اس کا ایک اہم نکتہ یہ یقینی بنانا ہے کہ صارف کا انٹرفیس یہ ظاہر کرے کہ ان کے ٹائپ کرنے کے دوران تلاش جاری ہے۔ ہمارے معاملے میں ہم ایک اینیمیٹڈ اسپنر استعمال کرتے ہیں۔ اس طرح اگر صارف تیزی سے ٹائپ کر رہا ہے اور نتائج نہیں دیکھ پا رہا ہے، تو اینیمیٹڈ اسپنر انہیں نتائج دیکھنے کے لیے کافی وقت دے گا۔
یہ بات قابل ذکر ہے کہ اسے نافذ کرنا ان کے استعمال کی موجودہ شرائط کے عین مطابق ہے۔ یہ طریقہ بنیادی طور پر صارف کی طرف سے باہر جانے والی آٹو کمپلیٹ کالز کی تعداد کو کنٹرول (throttle) کرتا ہے۔
اگر آپ Scribble Maps API کے ساتھ اپنا گوگل لائسنس استعمال کرتے ہیں تو ہم یہ کچھ آپٹیمائزیشنز پہلے سے ہی فراہم کرتے ہیں، لیکن اگر آپ گوگل میپس API کے بالکل اوپر اپنی مرضی کا کسٹم سیٹ اپ بنا رہے ہیں، تو ایک آسان اپ ڈیٹ ہے جو آپ آٹو کمپلیٹ کریڈٹس بچانے کے لیے کر سکتے ہیں۔
معیاری آٹو کمپلیٹ فنکشنلٹی ان پٹ میں ہر تبدیلی کے ساتھ ایک آٹو کمپلیٹ درخواست بھیجتی ہے۔ ان پٹ تبدیل ہونے پر ٹائم آؤٹ لگا کر استعمال ہونے والے کریڈٹس کی مقدار کو نمایاں طور پر کم کرنا ممکن ہے۔
یہاں ایک بہت ہی بنیادی مثال ہے۔
var acTimeOut;
textSearchInput.onkeyup = function() {
clearTimeout(acTimeout);
acTimeout = setTimeout(function() {
//put auto-complete calls in here
}, 250);
}
لہذا جب بھی کوئی صارف ان پٹ میں ٹائپ کرنا شروع کرے گا تو آٹو کمپلیٹ اس وقت تک فعال نہیں ہوگا جب تک کہ ایک لمحاتی تاخیر نہ ہو۔ آٹو کمپلیٹ کو زیادہ تیزی سے فعال کرنے کے لیے 250ms کی تاخیر کو کم کیا جا سکتا ہے۔ اگر صارف تیزی سے "Toronto" ٹائپ کرتا ہے، تو صارف کے رکنے پر 8 کے بجائے صرف ایک آٹو کمپلیٹ کال کی جائے گی۔
ہمیں معلوم ہوا ہے کہ وقت کی تاخیر (timed delay) سب سے بہتر کام کرتی ہے۔ اس کا ایک اہم نکتہ یہ یقینی بنانا ہے کہ صارف کا انٹرفیس یہ ظاہر کرے کہ ان کے ٹائپ کرنے کے دوران تلاش جاری ہے۔ ہمارے معاملے میں ہم ایک اینیمیٹڈ اسپنر استعمال کرتے ہیں۔ اس طرح اگر صارف تیزی سے ٹائپ کر رہا ہے اور نتائج نہیں دیکھ پا رہا ہے، تو اینیمیٹڈ اسپنر انہیں نتائج دیکھنے کے لیے کافی وقت دے گا۔
یہ بات قابل ذکر ہے کہ اسے نافذ کرنا ان کے استعمال کی موجودہ شرائط کے عین مطابق ہے۔ یہ طریقہ بنیادی طور پر صارف کی طرف سے باہر جانے والی آٹو کمپلیٹ کالز کی تعداد کو کنٹرول (throttle) کرتا ہے۔