نقل البيانات إلى ميزة "بحث في الجوار" الجديدة

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

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

  • تتضمّن واجهة برمجة التطبيقات القديمة PlacesService الطريقة nearbySearch() التي تتيح لك البحث عن أماكن ضمن منطقة محدّدة باستخدام كلمة رئيسية أو نوع.
  • يحتوي الصف Place على طريقة searchNearby() تتيح لك البحث عن أماكن ضمن منطقة محددة حسب نوع المكان، وذلك باستخدام مجموعة موسّعة من حقول بيانات الأماكن وأنواع الأماكن لتوفير مرونة أكبر.

يعرض الجدول التالي بعض الاختلافات الرئيسية في طرق البحث عن الأجهزة القريبة بين الفئة Place والفئة PlacesService:

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

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

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

البحث في الجوار (إصدار قديم)

تتيح لك ميزة "البحث القريب" القديمة البحث عن أماكن ضمن منطقة محدّدة باستخدام كلمة رئيسية أو نوع. لا يمكن حصر عمليات البحث باستخدام حقول بيانات الأماكن، وبالتالي يتم عرض جميع الحقول المتاحة مع كل طلب. تعرض المقتطفة التالية استدعاء nearbySearch() لعرض معلومات حول المطاعم في سيدني، أستراليا. الطلب متزامن، ويستخدم دالة رد اتصال، ويتضمّن عملية تحقّق شرطية مطلوبة بشأن PlacesServiceStatus.

let map;
let service;

function initMap() {
  const sydney = new google.maps.LatLng(-33.867, 151.195);

  map = new google.maps.Map(document.getElementById("map"), {
    center: sydney,
    zoom: 15,
  });

  const request = {
    location: sydney,
    radius: '500',
    type: ['restaurant']
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

// Helper function to create markers.
function createMarker(place) {
  if (!place.geometry || !place.geometry.location) return;

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

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

البحث في الأماكن القريبة (جديد)

يتميّز الإصدار الجديد من ميزة &quot;البحث القريب&quot; عن الإصدار السابق بما يلي:

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

يعرض مقتطف الرمز البرمجي التالي دالة تُنشئ طلب بحث عن مطاعم باستخدام خدمة &quot;البحث القريب&quot;. يوضّح هذا المثال استخدام الخيار rankPreference لترتيب نتائج البحث حسب الرواج (في الإصدار السابق، تم تحديد الترتيب باستخدام الخيار rankBy). بما أنّ طريقة searchNearby() تستخدم عامل التشغيل await، لا يمكن استخدامها إلا داخل الدالة async.

async function nearbySearch() {
  // Restrict within the map viewport.
  let center = new google.maps.LatLng(52.369358, 4.889258);
  const request = {
    // Required parameters.
    fields: ["displayName", "location", "businessStatus"],
    locationRestriction: {
      center: center,
      radius: 500,
    },
    // Optional parameters.
    includedPrimaryTypes: ["restaurant"],
    maxResultCount: 5,
    rankPreference: google.maps.places.SearchNearbyRankPreference.POPULARITY,
    language: "en-US",
    region: "us",
  };

  const { places } = await google.maps.places.Place.searchNearby(request);

  if (places.length) {
    console.log(places);

    // Create a new bounds, which will be extended with each result.
    const bounds = new google.maps.LatLngBounds();

    // Loop through and get all the results.
    places.forEach((place) => {
      const markerView = new google.maps.marker.AdvancedMarkerElement({
        map,
        position: place.location,
        title: place.displayName,
      });

      bounds.extend(place.location);
      console.log(place);
    });
    map.fitBounds(bounds);
  } else {
    console.log("No results");
  }
}

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