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

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

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

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

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

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

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

يقارن هذا القسم رموز طرق "البحث في الجوار" لتوضيح الاختلافات بين "خدمة الأماكن" وفئة `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,
  });
}

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

البحث في الجوار (جديد)

يحسّن الإصدار الجديد من "البحث في الجوار" الإصدار السابق بالطرق التالية:

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

يعرض مقتطف الرمز التالي دالة تُجري طلب "بحث في الجوار" عن المطاعم. يعرض هذا المثال استخدام الخيار 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");
  }
}

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