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

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

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

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

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

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

يعرض المقتطف التالي من الرمز البرمجي المكثّف طلب تفاصيل مكان باستخدام 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,
  });
}

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