الأدلة

الترميز الجغرافي العكسي لقائمة إحداثيات دون كتابة حلقة تكرار

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

إرسال أزواج الإحداثيات

بدلًا من طلب GET واحد لكل نقطة، أرسل مصفوفة من كائنات الإحداثيات إلى /v1/reverse. ويعيد كل عنصر عنوانه الخاص، بالترتيب الذي أُرسل به.

POST /v1/reverse
Content-Type: application/json

[{"lat": 48.8584, "lon": 2.2945}, {"lat": 40.6892, "lon": -74.0445}]
{
  "status": "ok",
  "results": [
    {"formatted": "Champ de Mars, Paris, France", "lat": 48.8584, "lon": 2.2945, "type": "address", "precision": "street", "confidence": 0.9, "place_id": "gh789", "components": {}},
    {"formatted": "Liberty Island, New York, NY", "lat": 40.6892, "lon": -74.0445, "type": "address", "precision": "street", "confidence": 0.88, "place_id": "jk012", "components": {}}
  ]
}

لماذا يتفوق هذا على الحلقة

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

قراءة الاستجابة

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

مثال ثانٍ: الجمع مع بيانات المنطقة الزمنية

من الخطوات اللاحقة الشائعة بعد الحصول على عناوين لقائمة إحداثيات معرفة الوقت في كل منها. وبدلًا من المرور على النتائج في حلقة مرة ثانية، مرّر قائمة الإحداثيات نفسها إلى /v1/timezone كطلب مجمّع مستقل. فتحصل على مصفوفتين متقابلتين، العناوين من /v1/reverse ومعرّفات المناطق الزمنية من /v1/timezone، كلتاهما بترتيب الصفوف الأصلي، بتكلفة طلب واحد لكل نقطة لكل نقطة نهاية.

خطأ يستحق التجنب

لا تفترض أن كل إحداثية في جدولك صالحة قبل إرسالها. فخط العرض خارج النطاق من -90 إلى 90 أو خط الطول خارج النطاق من -180 إلى 180، وهو أمر يحدث أكثر مما ينبغي عندما تتبادل الأعمدة أماكنها في جدول بيانات، لا يزال يُحتسب كطلب رغم أنه لا يمكن أن يعيد نتيجة معقولة. تحقق من صحة النطاقات في الكود الخاص بك قبل إرسال الدفعة، بدلًا من الدفع مقابل استعلام لم يكن ليحقق النجاح أصلًا.

تحديد حجم الدفعات

لا حاجة إلى إرسال جدول قاعدة بيانات كامل في طلب واحد. اجمع الإحداثيات في دفعات بحجم يناسب حدود الذاكرة والمهلة في السكربت الخاص بك، وتابع عدد الطلبات التي تستهلكها كل دفعة من الحصة اليومية المجانية أو من رصيدك. وتخبرك ترويستا X-Quota-Used وX-Quota-Free-Remaining في كل استجابة بموقفك بالضبط قبل أن ترسل الدفعة التالية.

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