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

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

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

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

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

PlacesService (قديمة) Place (جديد)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
يتطلّب ذلك استخدام دالة ردّ الاتصال للتعامل مع عنصر النتائج والاستجابة google.maps.places.PlacesServiceStatus. يستخدم Promises ويعمل بشكل غير متزامن.
يتطلّب هذا الإجراء إجراء عملية تحقّق من 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");
  }
}

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