الأدلة

إنشاء أداة بسيطة للعثور على «أقرب مكتب»

لا تحتاج شركة لديها عدد قليل من المكاتب إلى أي شيء معقد للإجابة عن سؤال «ما أقرب مكتب إليّ»، بل يكفي طلب ترميز جغرافي واحد ومقارنة قصيرة بقائمة نادرًا ما تتغير.

الترميز الجغرافي للمُدخل

سواء كتب الزائر عنوانًا أو رمزًا بريديًا، أجروا له ترميزًا جغرافيًا للحصول على الإحداثيات.

GET /v1/forward?q=Berlin, Germany&limit=1
{
  "status": "ok",
  "results": [
    {"formatted": "Berlin, Germany", "lat": 52.5200, "lon": 13.4050, "type": "locality", "precision": "city", "confidence": 0.85, "place_id": "bl456", "components": {"city": "Berlin", "country": "DE"}}
  ]
}

المقارنة بقائمة مكاتبكم

احتفظوا بإحداثيات مكاتبكم في قائمة ثابتة صغيرة داخل الشيفرة أو الإعدادات الخاصة بكم، لأنها نادرًا ما تتغير ولا تحتاج إلى استعلام خاص بها في كل مرة.

offices = [
  {"name": "Berlin", "lat": 52.5170, "lon": 13.3888},
  {"name": "Paris", "lat": 48.8566, "lon": 2.3522},
  {"name": "London", "lat": 51.5074, "lon": -0.1278}
]

احسبوا المسافة من إحداثيات الزائر إلى كل مكتب باستخدام صيغة هافرساين (haversine) القياسية، ثم رتبوا النتائج حسب المسافة وأعيدوا أقرب تطابق.

مثال ثانٍ: إضافة حقل بإكمال تلقائي أثناء الكتابة

بدلًا من مربع نص عادي، يتيح ربط حقل الموقع بنقطة النهاية /v1/autocomplete للزائر أن يختار من الأماكن المقترحة أثناء الكتابة، مما يقلل احتمال أن يؤدي خطأ مطبعي إلى نتيجة ترميز جغرافي غير متوقعة. وبمجرد اختيار أحد الاقتراحات، يؤدي تحويل قيمة place_id الخاصة به أو نصه عبر مسار الترميز الجغرافي الأمامي نفسه إلى تغذية مقارنة المسافات الموصوفة سابقًا مباشرة.

التعامل مع تطابق على مستوى المدينة

لاحظوا أن الدقة في المثال أعلاه هي «city» وليست «house»، لأن الزائر أدخل اسم مدينة فقط. وهذا مقبول تمامًا في أداة العثور على المكاتب، حيث الهدف هو اختيار أقرب مكتب من بين خيارات قليلة، لا تحديد مبنى بعينه بدقة. ولا تحتاج الدقة الأقل هنا إلى معالجة خاصة كما قد يكون الحال مع عنوان توصيل.

خطأ شائع يجب تجنبه

لا تنسوا تحديث قائمة المكاتب الثابتة في شيفرتكم عندما يُفتتح مكتب فعلي أو يُغلق أو ينتقل. ولأن القائمة موجودة في إعداداتكم الخاصة وليس في API، فمن السهل أن تتقادم دون أن يلاحظ أحد، فتوجّه الزوار بصمت نحو موقع مغلق أو تستبعد موقعًا جديدًا من كل المقارنات تمامًا. تعاملوا مع تلك القائمة على أنها جزء من المراجعة الدورية لمحتواكم، لا خطوة إعداد تُنفَّذ مرة واحدة.

حالة حدّية: اسم مكان ملتبس

قد يطابق اسم مكان قصير أحيانًا أكثر من موقع حقيقي واحد، كاسم مكان مشترك بين دولة ومنطقة لا علاقة لها بها في مكان آخر. ويؤدي تمرير المعامل countries لحصر التطابقات المرشحة في الدول التي تملكون فيها مكاتب فعلًا إلى تجنب أن يُحسم هذا النوع من الالتباس لصالح موقع في الطرف الآخر من العالم تمامًا.

عرض أكثر من أقرب مكتب واحد

يمنح عرض أقرب مكتبين أو ثلاثة، بدلًا من أقرب مكتب واحد فقط، الزائرَ القريب من حدود إقليمية فرصة اختيار المكتب الذي يناسبه فعلًا، كمكتب تناسبه لغته أو منطقته الزمنية أكثر حتى لو كان أبعد قليلًا من حيث المسافة.

كم يكلف

كل عملية بحث تُحتسب طلب ترميز جغرافي واحدًا. أما المقارنة بقائمة مكاتبكم فتجري بالكامل في شيفرتكم بعد ذلك ولا تضيف شيئًا إلى عدد طلباتكم. وصفحة كهذه، حتى مع حركة زيارات مستمرة، تبقى ضمن حدود 2,500 طلب مجاني يوميًا المتاحة مع كل مفتاح بفارق كبير.

تحتاج أداة العثور على أقرب مكتب المبنية بهذه الطريقة إلى طلب واحد بالضبط لكل عملية بحث يجريها الزائر، بينما يبقى منطق المقارنة الفعلي بالكامل من جهتكم. وتجدون تفاصيل صيغة الطلب في توثيق الترميز الجغرافي الأمامي.