تحسين استخدام الحصة عند الترميز الجغرافي

الترميز الجغرافي هو عملية تحويل العناوين ("1600 Amphitheatre Parkway، Mountain View، CA) إلى الإحداثيات الجغرافية (37.423021، -122.083739)، والذي يمكنك استخدامه لوضع أو تحديد موضع الخريطة. توفر واجهات برمجة التطبيقات في Google Maps Platform مناهج الترميز الجغرافي:

  • الترميز الجغرافي من جهة العميل والذي يتم تنفيذه في المتصفح، بشكل عام الاستجابة لإجراء المستخدم. توفر واجهة برمجة تطبيقات JavaScript للخرائط الصفوف التي تقدم الطلبات نيابةً عنك. يتم وصف هذا النهج في واجهة برمجة تطبيقات JavaScript للخرائط ذات الصلة.
  • الترميز الجغرافي من جهة الخادم HTTP، وهو ما يسمح لخادمك بالاستعلام مباشرةً خوادم Google للترميزات الجغرافية. واجهة برمجة التطبيقات Geocoding API هي الويب التي توفّر هذه الوظيفة. عادةً، تقوم بدمج هذا مع رمز آخر قيد التشغيل من جانب الخادم. الترميز الجغرافي من جهة الخادم في قسم واجهة برمجة تطبيقات Geocoding ذات الصلة.

أمثلة على الترميز الجغرافي من جهة العميل والخادم

إليك نموذج من الترميز الجغرافي من جهة العميل والذي يأخذ وترميزه جغرافيًا، ثم تحريك مركز الخريطة إلى هذا الموقع، وإضافة محدد الخريطة هناك:

geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  }
});

لمزيد من الأمثلة، راجع واجهة برمجة تطبيقات JavaScript للخرائط ذات الصلة.

فيما يلي مثال على استخدام Python لإجراء واجهة طلب الترميز الجغرافي:

import urllib2

address="1600+Amphitheatre+Parkway,+Mountain+View,+CA"
key="my-key-here"
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key)

response = urllib2.urlopen(url)

jsongeocode = response.read()

وينتج عن ذلك كائن JSON يتضمّن المحتوى التالي:

{
  "status": "OK",
  "results": [ {
    "types": street_address,
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": street_number
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": route
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "San Jose",
      "short_name": "San Jose",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Santa Clara",
      "short_name": "Santa Clara",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "California",
      "short_name": "CA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": postal_code
    } ],
    "geometry": {
      "location": {
        "lat": 37.4220323,
        "lng": -122.0845109
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188847,
          "lng": -122.0876585
        },
        "northeast": {
          "lat": 37.4251799,
          "lng": -122.0813633
        }
      }
    }
  } ]
}

يوفر الترميز الجغرافي من جانب الخادم أيضًا تنسيق XML كبديل JSON. لمزيد من الأمثلة، راجع واجهة برمجة تطبيقات Geocoding المستندات مكتبات البرامج في Python ولغات أخرى.

اعتبارات الحصص والتكلفة

تقود تكاليف الترميز الجغرافي والحصص وحدود المعدل، الاستراتيجيات الموضحة في هذا جلسة المراجعة.

التكلفة

لم تعُد حدود الحصة اليومية (QPD) مستخدَمة لطلبات الترميز الجغرافي. وبدلاً من ذلك، يتم تنفيذ كل طلب ترميز جغرافي، سواء من جانب العميل من خلال المتصفح أو من جانب الخادم من خلال خدمة ويب Geocoding API، بسعر لكل سعر. لإدارة تكلفة الاستخدام، ضع في اعتبارك الحدّ الأقصى لحصتك اليومية

حدود المعدل

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

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

التخزين المؤقت

عرض سياسات Geocoding API عن التخزين المؤقت

حالات استخدام الترميز الجغرافي من جهة العميل

الإجابة المختصرة هي "دائمًا تقريبًا". الأسباب هي:

  • الطلبات والاستجابة من جهة العميل توفران طريقة أسرع تجربة تفاعلية للمستخدمين.
  • يمكن أن يتضمن الطلب من جانب العميل معلومات تعمل على تحسين الترميز الجغرافي الجودة: لغة المستخدم والمنطقة وإطار العرض.

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

هناك بنيتان أساسيتان للترميز الجغرافي من جهة العميل:

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

حالات استخدام الترميز الجغرافي من جانب الخادم

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

بعض المخاوف المحتملة هي زيادة غير ضرورية في وقت الاستجابة لدى المستخدم، ونتائج الترميز الجغرافي بجودة أقل من جهة العميل لأنه أقل تتوفر المعلومات في الطلب.