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