توضّح هذه الصفحة الاختلافات بين "البحث في الجوار" كما هو مستخدَم في الفئة
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");
}
}
مزيد من المعلومات
- الاطّلاع على رمز المثال الكامل
- الاطّلاع على مستندات طريقة "البحث في الجوار" (جديدة)
- الاطّلاع على مرجع
searchNearby()