Zur neuen Place Search migrieren

Entwickler im Europäischen Wirtschaftsraum (EWR)

Auf dieser Seite werden die Unterschiede zwischen den textbasierten Ortssuchfunktionen in der Place Klasse (neu) und dem PlacesService (Legacy) erläutert. Außerdem finden Sie einige Code-Snippets zum Vergleich.

Der Legacy-Dienst PlacesService bietet die folgenden textbasierten Suchmethoden:

  • Die Methode findPlaceFromQuery() verwendet eine Textabfrage und gibt ein einzelnes Ortsergebnis zurück. Sie unterstützt die Verwendung von Ortsdatenfeldern.
  • Mit der Methode findPlaceFromPhoneNumber() können Sie anhand einer Telefonnummer nach einem Ort suchen. Sie unterstützt die Verwendung von Ortsdatenfeldern.
  • Die Methode textSearch() verwendet eine Textabfrage und gibt eine Liste von Ortsergebnissen zurück. textSearch() ist älter und unterstützt die Verwendung von Ortsdatenfeldern nicht.

Die neue Klasse Place bietet die Methode Place.searchByText(), mit der Sie entweder mit einer Textabfrage oder einer Telefonnummer nach Orten suchen können. Außerdem können Sie Ihre Suchanfragen mit einer erweiterten Auswahl an regelmäßig aktualisierten Ortsdatenfeldern und Ortstypen anpassen.

In der folgenden Tabelle sind einige der wichtigsten Unterschiede bei den Ortssuchmethoden zwischen der Place Klasse und PlacesService aufgeführt:

PlacesService (Legacy) Place (Neu)
findPlaceFromQuery()
findPlaceFromPhoneNumber()
searchByText()
FindPlaceFromQueryRequest
FindPlaceFromPhoneNumberRequest
SearchByTextRequest
Begrenzte Abfrageoptionen. Umfangreichere Abfrageoptionen.
Erfordert die Verwendung eines Callbacks, um das Ergebnisobjekt und google.maps.places.PlacesServiceStatus Antwort zu verarbeiten. Verwendet Promises und funktioniert asynchron.
Erfordert eine PlacesServiceStatus-Prüfung. Keine Statusprüfung erforderlich, Standardfehlerbehandlung kann verwendet werden. Weitere Informationen.
Unterstützt nur die Standortgewichtung. Unterstützt Standortgewichtung und Standortbeschränkung.
Ortsdatenfelder werden im Snake-Case-Format formatiert. Ortsdatenfelder werden im Camel-Case-Format formatiert.
Gibt ein einzelnes Ortsergebnis zurück. Gibt bis zu 20 Ortsergebnisse zurück.
Beschränkt auf eine feste Anzahl von Ortstypen und Ortsdatenfeldern. Bietet eine erweiterte Auswahl an regelmäßig aktualisierten Ortstypen und Ortsdatenfeldern.
textSearch()
searchByText()
Gibt alle verfügbaren Datenfelder zurück (eine Teilmenge der unterstützten Felder); kann nicht auf bestimmte Felder beschränkt werden. Gibt nur die angeforderten Ortsdatenfelder zurück.

Codevergleich

In diesem Abschnitt wird der Code für textbasierte Suchmethoden verglichen, um die Unterschiede zwischen dem Places Service und der Klasse „Place“ zu veranschaulichen. Die Code-Snippets zeigen den Code, der für die jeweilige API erforderlich ist, um eine textbasierte Suchanfrage zu stellen.

Places Service (Legacy)

Das folgende Code-Snippet zeigt, wie Sie mit der Methode findPlaceFromQuery() nach einem Ort suchen. Die Anfrage ist synchron und enthält eine bedingte Prüfung von PlacesServiceStatus. Die erforderlichen Ortsdatenfelder werden im Anfragetext angegeben, der vor dem Stellen der eigentlichen Anfrage definiert wird.

function findPlaces() {
  const request = {
    query: "Museum of Contemporary Art Australia",
    fields: ["name", "geometry"],
  };

  // Create an instance of PlacesService.
  service = new google.maps.places.PlacesService(map);

  // Make a findPlaceFromQuery request.
  service.findPlaceFromQuery(request, (results, status) => {
    let place = results[0];
    if (status === google.maps.places.PlacesServiceStatus.OK && results) {
      if (!place.geometry || !place.geometry.location) return;

      const marker = new google.maps.Marker({
        map,
        position: place.geometry.location,
      });
      map.setCenter(place.geometry.location);
    }
  });
}

Weitere Informationen

Text Search (New)

Das folgende Code-Snippet zeigt, wie Sie mit der Methode searchByText() nach Orten suchen. Die Anfrage ist asynchron und erfordert keine Statusprüfung (die Standardfehlerbehandlung kann verwendet werden). In diesem Beispiel enthält die Anfrage einen maxResultCount von 8 (der Wert muss zwischen 1 und 20 liegen). Diese Funktion durchläuft die Ergebnisse und fügt für jedes Ergebnis eine Markierung hinzu. Die Kartenbegrenzungen werden anhand der Position der Markierungen angepasst. Da die Methode searchByText() den Operator await verwendet, kann sie nur innerhalb einer async-Funktion verwendet werden.

async function findPlaces() {
  // Define a request.
  // The `fields` property is required; all others are optional.
  const request = {
    fields: ["displayName", "location", "businessStatus"],
    textQuery: "Tacos in Mountain View",
    includedType: "restaurant",
    locationBias: { lat: 37.4161493, lng: -122.0812166 },
    isOpenNow: true,
    language: "en-US",
    maxResultCount: 8,
    minRating: 3.2,
    region: "us",
    useStrictTypeFiltering: false,
  };

  // Call searchByText passing the request.
  const { places } = await google.maps.places.Place.searchByText(request);

  // Add a marker for each result.
  if (places.length) {
    const bounds = new google.maps.LatLngBounds();

    places.forEach((place) => {
      const markerView = new google.maps.marker.AdvancedMarkerElement({
        map,
        position: place.location,
        title: place.displayName,
      });

      bounds.extend(place.location);
      console.log(place);
    });
    map.fitBounds(bounds);
  } else {
    console.log("No results");
  }
}

Die Methode searchByText() unterstützt im Vergleich zur vorherigen Version viele weitere Anfrageoptionen, darunter:

  • includedType, mit der Sie Suchanfragen auf einen bestimmten Ortstyp beschränken können.
  • isOpenNow , mit der Sie Suchanfragen so einschränken können, dass nur geöffnete Orte zurückgegeben werden.
  • minRating, mit der Sie Ergebnisse unterhalb des angegebenen Grenzwerts herausfiltern können (z. B. nur Orte mit drei oder mehr Sternen zurückgeben).
  • locationRestriction , mit der Ergebnisse außerhalb des angegebenen Standorts ausgelassen werden (locationBias wird ebenfalls unterstützt).

Weitere Informationen