הבטחות

שיטות אסינכרוניות בכל ממשק Google Maps JavaScript API מחזירות Promises.

תמיכה

API השיטות מחזירות הבטחות
מסלול כן
Distance Matrix כן
גובה כן
Geocoder כן
תמונות עם זום מקסימלי כן
מקומות לא
Places AutocompleteService באופן חלקי1
Streetview כן

שימוש

במדריך הזה מוסבר איך להשתמש ב-Promises או בדוגמאות שבהמשך כדי לבצע קריאות אסינכרוניות לשיטות באמצעות Google Maps JavaScript API.

‫Async ו-await

אופרטור await משמש להמתנה להבטחה. אפשר להשתמש בו רק בתוך פונקציה אסינכרונית.

const app = async () => {
  const elevationService = google.maps.ElevationService();
  const locations = [{lat: 27.986065, lng:86.922623}];

  const response = await elevationService.getElevationForLocation({locations});
  console.log(response.results);
};

app();

אחר כך תופסים, ולבסוף

ל-Promise object יש את השיטות then,‏ catch ו-finally שמקבלות פונקציות קריאה חוזרת.

const elevationService = google.maps.ElevationService();
const locations = [{lat: 27.986065, lng:86.922623}];

const promise = elevationService.getElevationForLocation({locations});

promise
    .then((response) => {
      console.log(response.results);
    })
    .catch((error) => {
      console.log(error);
    });
    .finally(() => {
      console.log('done');
    });

תבנית של קריאה חוזרת אסינכרונית

תבנית הקריאה החוזרת עדיין תקפה ונתמכת.

const elevationService = google.maps.ElevationService();
const locations = [{lat: 27.986065, lng:86.922623}];

const callback = (results, status) => {
  if (status === 'OK') {
    console.log(results);
  } else {
    // handle this case
  }
};

elevationService.getElevationForLocation({locations}, callback);

  1. בשלב הזה, יש תמיכה ב-Promises רק בשפות getPlacePredictions()