نقل البيانات إلى ميزة "تفاصيل المكان" الجديدة

المطوّرون في المنطقة الاقتصادية الأوروبية

يمكن أن تعرض Places API معلومات تفصيلية حول مكان معيّن. توضّح هذه الصفحة الاختلافات بين تفاصيل المكان المستخدَمة في الفئة Place (الجديدة) والفئة PlacesService (القديمة)، وتقدّم بعض مقتطفات الرموز البرمجية للمقارنة. يسرد الجدول التالي بعض الاختلافات الرئيسية في استخدام تفاصيل المكان بين الفئة Place والفئة PlacesService:

PlacesService (قديمة) Place (جديد)
getDetails() fetchFields()
PlaceDetailsRequest FetchFieldsRequest
تتطلّب الطرق استخدام دالة ردّ الاتصال للتعامل مع عنصر النتائج والاستجابة google.maps.places.PlacesServiceStatus. يستخدم Promises ويعمل بشكل غير متزامن.
تتطلّب الطرق إجراء عملية تحقّق PlacesServiceStatus. لا يلزم التحقّق من الحالة، ويمكن استخدام معالجة الأخطاء العادية. مزيد من المعلومات
يتم تنسيق حقول بيانات المواقع الجغرافية باستخدام تنسيق snake case. يتم تنسيق حقول بيانات الأماكن باستخدام تنسيق Camel Case.
تقتصر على مجموعة ثابتة من أنواع الأماكن وحقول بيانات الأماكن. توفّر هذه الخدمة مجموعة موسّعة من أنواع الأماكن وحقول بيانات الأماكن التي يتم تعديلها بانتظام.

مقارنة الرموز

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

خدمة "الأماكن" (الإصدار القديم)

يوضّح مقتطف الرمز المختصر التالي كيفية إرسال طلب تفاصيل مكان باستخدام PlacesService. يستخدم الطلب دالة رد اتصال ويتضمّن عملية تحقّق شرطية مطلوبة بشأن PlacesServiceStatus. يتم تحديد حقول بيانات المكان المطلوبة في نص الطلب.

function getPlaceDetails() {
  // Instantiate the Places Service.
  const service = new google.maps.places.PlacesService(map);

  // Make a request using the Place ID.
  const request = {
    placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
    fields: ["name", "formatted_address", "place_id", "geometry"],
  };

  // Request place details.
  service.getDetails(request, (place, status) => {
    // Check whether PlacesServiceStatus is OK.
    if (
      status === google.maps.places.PlacesServiceStatus.OK &&
      place &&
      place.geometry &&
      place.geometry.location
    ) {

      // Log the result.
      console.log(place.name);
      console.log(place.formatted_address);

      // Add a marker for the place.
      const marker = new google.maps.Marker({
        map,
        position: place.geometry.location,
        title: place.name,
      });
    }
  });
}

مزيد من المعلومات

فئة المكان (جديدة)

يعرض مقتطف الرمز المختصر التالي كيفية إرسال طلب تفاصيل مكان باستخدام الفئة Place. الطلب غير متزامن، ولا يتضمّن عملية التحقّق من الحالة (يمكن استخدام معالجة الأخطاء العادية). يتم استخدام معرّف المكان لإنشاء مثيل Place جديد، ويتم استخدام هذا المثيل لتقديم الطلب (fetchFields()). ولا يتم تمرير حقول بيانات المكان المطلوبة إلا عند استدعاء fetchFields()، ما يوفّر مرونة أكبر. بما أنّ طريقة fetchFields() تستخدم عامل التشغيل await، لا يمكن استخدامها إلا داخل دالة async.

async function getPlaceDetails() {
  // Use place ID to create a new Place instance.
  const place = new google.maps.places.Place({
    id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
    requestedLanguage: "en", // optional
  });

  // Call fetchFields, passing the needed data fields.
  await place.fetchFields({
    fields: ["displayName", "formattedAddress", "location"],
  });

  // Log the result.
  console.log(place.displayName);
  console.log(place.formattedAddress);

  // Add an Advanced Marker.
  const marker = new google.maps.marker.AdvancedMarkerElement({
    map,
    position: place.location,
    title: place.displayName,
  });
}

مزيد من المعلومات