Auf dieser Seite werden die Unterschiede zwischen den textbasierten Place Search-Funktionen in der Klasse Place (neu) und der Klasse PlacesService (Legacy) erläutert. Außerdem finden Sie hier einige Code-Snippets zum Vergleich.
Die Legacy-Version von PlacesService bietet die folgenden textbasierten Suchmethoden:
- Die Methode
findPlaceFromQuery(), die eine Textanfrage annimmt und ein einzelnes Ortsergebnis zurückgibt. Sie unterstützt die Verwendung von Ortsdatenfeldern. - Die Methode
findPlaceFromPhoneNumber(), mit der Sie anhand einer Telefonnummer nach einem Ort suchen können. Sie unterstützt die Verwendung von Ortsdatenfeldern. - Die Methode
textSearch(), die eine Textanfrage annimmt und eine Liste von Orten zurückgibt.textSearch()ist älter und unterstützt die Verwendung von Ortsdatenfeldern nicht.
Die neue Klasse Place bietet die Methode Place.searchByText(), mit der Sie per Textabfrage oder Telefonnummer nach Orten suchen können. Außerdem können Sie Ihre Suchanfragen mithilfe einer erweiterten Auswahl an regelmäßig aktualisierten Ortsdatenfeldern und Ortstypen anpassen.
In der folgenden Tabelle sind einige der wichtigsten Unterschiede zwischen den Methoden für die Place Search der Klasse Place und PlacesService aufgeführt:
PlacesService (alt) |
Place (neu) |
|---|---|
findPlaceFromQuery()findPlaceFromPhoneNumber()
|
searchByText() |
FindPlaceFromQueryRequestFindPlaceFromPhoneNumberRequest |
SearchByTextRequest |
| Eingeschränkte Abfrageoptionen. | Umfangreichere Abfrageoptionen. |
Erfordert die Verwendung eines Callbacks, um das Ergebnisobjekt und die google.maps.places.PlacesServiceStatus-Antwort zu verarbeiten. |
Verwendet Promises und funktioniert asynchron. |
Hierfür ist eine PlacesServiceStatus-Prüfung erforderlich. |
Keine Statusprüfung erforderlich, Standardfehlerbehandlung kann verwendet werden. Weitere Informationen |
| Unterstützt nur die Standortgewichtung. | Unterstützt die Standortgewichtung und die Standortbeschränkung. |
| Places-Datenfelder werden im Snake-Case-Format formatiert. | Places-Datenfelder werden in Camel-Case-Schreibweise formatiert. |
| Gibt ein einzelnes Ortsergebnis zurück. | Gibt bis zu 20 Orte zurück. |
| Beschränkt auf eine feste Gruppe 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. | Es werden nur die angeforderten Ortsdatenfelder zurückgegeben. |
Codevergleich
In diesem Abschnitt wird der Code für Textsuchmethoden 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 für PlacesServiceStatus. Die erforderlichen Ortsdatenfelder werden im Anfragetext angegeben, der vor 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
- Vollständigen Beispielcode ansehen
- Dokumentation ansehen
FindPlaceFromQueryRequest-Schnittstellenreferenz
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 (es kann die Standardfehlerbehandlung verwendet werden). In diesem Beispiel enthält die Anfrage einen maxResultCount-Wert von 8 (Wert muss zwischen 1 und 20 liegen). Diese Funktion durchläuft die Ergebnisse und fügt für jedes Ergebnis eine Markierung hinzu. Die Kartengrenzen werden dabei 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 dem Sie die Suche auf einen bestimmten Ortstyp beschränken können.isOpenNow, mit dem Sie Suchanfragen auf Orte beschränken können, die geöffnet sind.minRating: Damit können Sie Ergebnisse unterhalb des angegebenen Limits herausfiltern, z. B. nur Orte mit drei oder mehr Sternen zurückgeben.locationRestriction, wodurch Ergebnisse außerhalb des angegebenen Standorts weggelassen werden (locationBiaswird ebenfalls unterstützt).
Weitere Informationen
- Vollständigen Beispielcode ansehen
- Dokumentation zu Text Search (New)
searchByText()-Referenz ansehen