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