Places API می تواند اطلاعات دقیق در مورد یک مکان خاص را برگرداند. این صفحه تفاوتهای بین جزئیات مکان را که در کلاس Place
(جدید) و PlacesService
(میراث) استفاده میشود، توضیح میدهد و چند قطعه کد برای مقایسه ارائه میکند. جدول زیر برخی از تفاوت های اصلی در استفاده از جزئیات مکان را بین کلاس Place
و PlacesService
فهرست می کند:
PlacesService (قدیمی) | Place (جدید) |
---|---|
getDetails() | fetchFields() |
PlaceDetailsRequest | FetchFieldsRequest |
روشها نیاز به استفاده از یک تماس برای رسیدگی به شی نتایج و پاسخ google.maps.places.PlacesServiceStatus دارند. | از Promises استفاده می کند و به صورت ناهمزمان کار می کند. |
روشها به بررسی PlacesServiceStatus نیاز دارند. | بدون بررسی وضعیت مورد نیاز، می توان از مدیریت خطای استاندارد استفاده کرد. |
فیلدهای داده مکان با استفاده از snake case قالب بندی می شوند. | فیلدهای داده مکان با استفاده از جعبه شتر قالب بندی می شوند. |
محدود به مجموعه ثابتی از انواع مکان و فیلدهای داده مکان . | انتخاب گسترده ای از انواع مکان و فیلدهای داده مکان که به طور منظم به روز می شوند را ارائه می دهد. |
مقایسه کدها
این بخش دو قطعه کد مشابه را با هم مقایسه می کند تا تفاوت بین سرویس Places و کلاس Place را نشان دهد. قطعه کد کد مورد نیاز در هر API مربوطه را برای درخواست جزئیات مکان نشان می دهد و سپس از داده های مکان به دست آمده برای اضافه کردن یک نشانگر به نقشه استفاده می کند.
خدمات مکانها (قدمتی)
قطعه کد فشرده زیر درخواست جزئیات مکان را با استفاده از PlacesService
نشان می دهد. این درخواست از یک تماس برگشتی استفاده میکند و شامل بررسی مشروط مورد نیاز در PlacesServiceStatus
است. فیلدهای داده مکان مورد نیاز در بدنه درخواست مشخص شده است.
function getPlaceDetails() {
// Instantiate the Places Service.
const service = new google.maps.places.PlacesService(map);
// Make a request using the Place ID.
const request = {
placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
fields: ["name", "formatted_address", "place_id", "geometry"],
};
// Request place details.
service.getDetails(request, (place, status) => {
// Check whether PlacesServiceStatus is OK.
if (
status === google.maps.places.PlacesServiceStatus.OK &&
place &&
place.geometry &&
place.geometry.location
) {
// Log the result.
console.log(place.name);
console.log(place.formatted_address);
// Add a marker for the place.
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
});
}
بیشتر بدانید
کلاس مکان (جدید)
قطعه کد فشرده زیر درخواست جزئیات مکان را با استفاده از کلاس Place
نشان می دهد. درخواست ناهمزمان است و شامل بررسی وضعیت نمی شود (می توان از مدیریت خطای استاندارد استفاده کرد). شناسه مکان برای ایجاد یک نمونه Place
جدید استفاده می شود که برای ایجاد درخواست ( fetchFields()
) استفاده می شود. تا زمانی که fetchFields()
فراخوانی نشود، فیلدهای داده مکان مورد نیاز ارسال نمی شوند، که انعطاف پذیری بیشتری را به همراه دارد. از آنجا که متد fetchFields()
از عملگر await استفاده می کند، فقط می تواند در داخل یک تابع async
استفاده شود.
async function getPlaceDetails() {
// Use place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
requestedLanguage: "en", // optional
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// Log the result.
console.log(place.displayName);
console.log(place.formattedAddress);
// Add an Advanced Marker.
const marker = new google.maps.marker.AdvancedMarkerElement({
map,
position: place.location,
title: place.displayName,
});
}
بیشتر بدانید
، Places API می تواند اطلاعات دقیق در مورد یک مکان خاص را برگرداند. این صفحه تفاوتهای بین جزئیات مکان را که در کلاس Place
(جدید) و PlacesService
(میراث) استفاده میشود، توضیح میدهد و چند قطعه کد برای مقایسه ارائه میکند. جدول زیر برخی از تفاوت های اصلی در استفاده از جزئیات مکان را بین کلاس Place
و PlacesService
فهرست می کند:
PlacesService (قدیمی) | Place (جدید) |
---|---|
getDetails() | fetchFields() |
PlaceDetailsRequest | FetchFieldsRequest |
روشها نیاز به استفاده از یک تماس برای رسیدگی به شی نتایج و پاسخ google.maps.places.PlacesServiceStatus دارند. | از Promises استفاده می کند و به صورت ناهمزمان کار می کند. |
روشها به بررسی PlacesServiceStatus نیاز دارند. | بدون بررسی وضعیت مورد نیاز، می توان از مدیریت خطای استاندارد استفاده کرد. |
فیلدهای داده مکان با استفاده از snake case قالب بندی می شوند. | فیلدهای داده مکان با استفاده از جعبه شتر قالب بندی می شوند. |
محدود به مجموعه ثابتی از انواع مکان و فیلدهای داده مکان . | انتخاب گسترده ای از انواع مکان و فیلدهای داده مکان که به طور منظم به روز می شوند را ارائه می دهد. |
مقایسه کدها
این بخش دو قطعه کد مشابه را با هم مقایسه می کند تا تفاوت بین سرویس Places و کلاس Place را نشان دهد. قطعه کد کد مورد نیاز در هر API مربوطه را برای درخواست جزئیات مکان نشان می دهد و سپس از داده های مکان به دست آمده برای اضافه کردن یک نشانگر به نقشه استفاده می کند.
خدمات مکانها (قدمتی)
قطعه کد فشرده زیر درخواست جزئیات مکان را با استفاده از PlacesService
نشان می دهد. این درخواست از یک تماس برگشتی استفاده میکند و شامل بررسی مشروط مورد نیاز در PlacesServiceStatus
است. فیلدهای داده مکان مورد نیاز در بدنه درخواست مشخص شده است.
function getPlaceDetails() {
// Instantiate the Places Service.
const service = new google.maps.places.PlacesService(map);
// Make a request using the Place ID.
const request = {
placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
fields: ["name", "formatted_address", "place_id", "geometry"],
};
// Request place details.
service.getDetails(request, (place, status) => {
// Check whether PlacesServiceStatus is OK.
if (
status === google.maps.places.PlacesServiceStatus.OK &&
place &&
place.geometry &&
place.geometry.location
) {
// Log the result.
console.log(place.name);
console.log(place.formatted_address);
// Add a marker for the place.
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
});
}
بیشتر بدانید
کلاس مکان (جدید)
قطعه کد فشرده زیر درخواست جزئیات مکان را با استفاده از کلاس Place
نشان می دهد. درخواست ناهمزمان است و شامل بررسی وضعیت نمی شود (می توان از مدیریت خطای استاندارد استفاده کرد). شناسه مکان برای ایجاد یک نمونه Place
جدید استفاده می شود که برای ایجاد درخواست ( fetchFields()
) استفاده می شود. تا زمانی که fetchFields()
فراخوانی نشود، فیلدهای داده مکان مورد نیاز ارسال نمی شوند، که انعطاف پذیری بیشتری را به همراه دارد. از آنجا که متد fetchFields()
از عملگر await استفاده می کند، فقط می تواند در داخل یک تابع async
استفاده شود.
async function getPlaceDetails() {
// Use place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
requestedLanguage: "en", // optional
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// Log the result.
console.log(place.displayName);
console.log(place.formattedAddress);
// Add an Advanced Marker.
const marker = new google.maps.marker.AdvancedMarkerElement({
map,
position: place.location,
title: place.displayName,
});
}