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

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

يمكن أن تعرض 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. تعرض مقتطفات الرموز الرمز المطلوب على كل واجهة برمجة تطبيقات ذات صلة لإجراء طلب تفاصيل المكان، ثم استخدام بيانات المكان الناتجة لإضافة علامة على الخريطة.

Places Service (قديمة)

يعرض مقتطف الرمز المختصر التالي إجراء طلب تفاصيل المكان باستخدام 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. الطلب غير متزامن ولا يتضمّن فحصًا للحالة (يمكن استخدام معالجة الأخطاء العادية). يتم استخدام رقم تعريف المكان لإنشاء مثيل جديد من 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,
  });
}

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