מעבר לפרטי המקום החדשים

Places API יכול להחזיר מידע מפורט על מקום ספציפי. בדף הזה מוסבר מה ההבדל בין פרטי המיקום כפי שהם משמשים בכיתה Place (חדשה) לבין פרטי המיקום בכיתה PlacesService (קודמת), ומופיעים כמה קטעי קוד להשוואה. בטבלה הבאה מפורטים חלק מההבדלים העיקריים בשימוש בפרטי המיקום בין הכיתה Place לבין PlacesService:

PlacesService (דור קודם) Place (חדש)
getDetails() fetchFields()
PlaceDetailsRequest FetchFieldsRequest
כדי לטפל באובייקט התוצאות ובתגובה google.maps.places.PlacesServiceStatus, צריך להשתמש ב-method עם קריאה חוזרת. משתמשת ב-Promises ופועלת באופן אסינכרוני.
שיטות דורשות בדיקה של PlacesServiceStatus. אין צורך בבדיקת סטטוס, אפשר להשתמש בטיפול שגיאות רגיל.
שדות של נתוני מיקום מעוצבים לפי פורמט snake case. שדות של נתוני מקומות מוגדרים בפורמט camel case.
מוגבלת לקבוצה קבועה של סוגים של מקומות ושדות של נתוני מקומות. מציעים מבחר מורחב של סוגים של מקומות ושדות של נתוני מקומות שמתעדכנים באופן קבוע.

השוואת קוד

בקטע הזה נסביר את ההבדלים בין שירות Places לבין הכיתה Place באמצעות השוואה בין שני קטעי קוד דומים. בקטעי הקוד מוצג הקוד הנדרש בכל ממשק API רלוונטי כדי לשלוח בקשה לקבלת פרטי מקום, ולאחר מכן נעשה שימוש בנתוני המקום שהתקבלו כדי להוסיף סמן למפה.

שירות Places (דור קודם)

קטע הקוד המקוצר הבא מציג שליחת בקשה לקבלת פרטי מקום באמצעות PlacesService. הבקשה כוללת קריאה חוזרת (callback) ובדיקה מותנית חובה של 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(), וכך יש גמישות רבה יותר. מכיוון ש-method ‏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,
  });
}

מידע נוסף