Places API יכול להחזיר מידע מפורט על מקום מסוים. בדף הזה מוסברים ההבדלים בין פרטי מקומות כפי שמשתמשים בהם במחלקה Place
(חדש) ובמחלקה PlacesService
(מהדור הקודם), ומוצגים כמה קטעי קוד להשוואה. בטבלה הבאה מפורטים כמה מההבדלים העיקריים בשימוש בפרטי מקום בין המחלקה Place
לבין PlacesService
:
PlacesService (גרסה קודמת) |
Place (חדש) |
---|---|
getDetails() |
fetchFields() |
PlaceDetailsRequest |
FetchFieldsRequest |
ב-methods צריך להשתמש בקריאה חוזרת כדי לטפל באובייקט התוצאות ובתגובה google.maps.places.PlacesServiceStatus . |
משתמש ב-Promises, ופועל באופן אסינכרוני. |
השיטות מחייבות PlacesServiceStatus בדיקה. |
אין צורך בבדיקת סטטוס, אפשר להשתמש בטיפול רגיל בשגיאות. מידע נוסף |
הפורמט של שדות נתונים של מקומות הוא snake case. | הפורמט של שדות נתוני המקום הוא camel case. |
מוגבל לסט קבוע של סוגי מקומות ושדות נתוני מקומות. | מציע מבחר מורחב של סוגי מקומות ושדות נתוני מקומות שמתעדכנים באופן קבוע. |
השוואת קוד
בקטע הזה מוצגות שתי דוגמאות דומות לקוד כדי להמחיש את ההבדלים בין Places Service לבין Place class. בקטעי הקוד מוצג הקוד שנדרש בכל API כדי לשלוח בקשה לפרטי מקום, ואז להשתמש בנתוני המקום שמתקבלים כדי להוסיף סמן למפה.
Places Service (גרסה קודמת)
בקטע הקוד הבא מוצגת בקשה מצומצמת לפרטי מקום באמצעות 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 Details
getDetails
מידע נוסף
סוג המקום (חדש)
בקטע הקוד הבא מוצגת בקשה מצומצמת לפרטי מקום באמצעות המחלקה 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,
});
}
מידע נוסף
- לצפייה בדוגמה המלאה של הקוד
- מסמכי התיעוד של Place Details
fetchFields()
מידע נוסף