Zur neuen Funktion „Place Details“ migrieren

Entwickler im Europäischen Wirtschaftsraum (EWR)

Die Places API kann detaillierte Informationen zu einem bestimmten Ort zurückgeben. Auf dieser Seite werden die Unterschiede zwischen Ortsdetails in der Place Klasse (neu) und PlacesService (alt) erläutert und einige Code-Snippets zum Vergleich bereitgestellt. In der folgenden Tabelle sind einige der wichtigsten Unterschiede bei der Verwendung von Ortsdetails zwischen der Place Klasse und PlacesService aufgeführt:

PlacesService (alt) Place (neu)
getDetails() fetchFields()
PlaceDetailsRequest FetchFieldsRequest
Für Methoden ist die Verwendung eines Callbacks erforderlich, um das Ergebnisobjekt und google.maps.places.PlacesServiceStatus Antwort zu verarbeiten. Verwendet Promises und funktioniert asynchron.
Für Methoden ist eine PlacesServiceStatus-Prüfung erforderlich. Keine Statusprüfung erforderlich, Standardfehlerbehandlung kann verwendet werden. Weitere Informationen.
Ortsdatenfelder werden im Snake-Case-Format formatiert. Ortsdatenfelder werden im Camel-Case-Format formatiert.
Beschränkt auf eine feste Anzahl von Ortstypen und Ortsdatenfeldern. Bietet eine erweiterte Auswahl an regelmäßig aktualisierten Ortstypen und Ortsdatenfeldern.

Codevergleich

In diesem Abschnitt werden zwei ähnliche Codeabschnitte verglichen, um die Unterschiede zwischen dem Places Service und der Place-Klasse zu veranschaulichen. Die Code-Snippets zeigen den Code, der für die jeweilige API erforderlich ist, um eine Anfrage zu Ortsdetails zu stellen. Anschließend werden die resultierenden Ortsdaten verwendet, um der Karte eine Markierung hinzuzufügen.

Places Service (alt)

Das folgende verkürzte Code-Snippet zeigt, wie eine Anfrage zu Ortsdetails mit PlacesService gestellt wird. Die Anfrage verwendet einen Callback und enthält eine erforderliche bedingte Prüfung von PlacesServiceStatus. Die erforderlichen Ortsdatenfelder werden im Anfragetext angegeben.

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,
      });
    }
  });
}

Weitere Informationen

Place-Klasse (neu)

Das folgende verkürzte Code-Snippet zeigt, wie eine Anfrage zu Ortsdetails mit der Place-Klasse gestellt wird. Die Anfrage ist asynchron und enthält keine Statusprüfung (Standardfehlerbehandlung kann verwendet werden). Mit einer Orts-ID wird eine neue Place-Instanz erstellt, mit der die Anfrage gestellt wird (fetchFields()). Die erforderlichen Ortsdatenfelder werden erst übergeben, wenn fetchFields() aufgerufen wird, was mehr Flexibilität bietet. Da die Methode fetchFields() den Operator „await“ verwendet, kann sie nur in einer async-Funktion verwendet werden.

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,
  });
}

Weitere Informationen