Auf dieser Seite werden die Unterschiede zwischen der Suche in der Nähe, wie sie in der Klasse Place
(neu) und PlacesService
(alt) verwendet wird, erläutert. Außerdem finden Sie einige Code-Snippets zum Vergleich.
- Die alte
PlacesService
-Version hat einenearbySearch()
-Methode, mit der Sie anhand eines Suchbegriffs oder Typs nach Orten innerhalb eines bestimmten Bereichs suchen können. - Die Klasse
Place
hat eine MethodesearchNearby()
, mit der Sie nach Orten innerhalb eines bestimmten Bereichs nach Ortstyp suchen können. Dabei wird eine erweiterte Auswahl an Ortsdatenfeldern und Ortstypen verwendet, um die Flexibilität zu erhöhen.
In der folgenden Tabelle sind einige der Hauptunterschiede bei der Suche in der Nähe zwischen der Klasse Place
und PlacesService
aufgeführt:
PlacesService (alt) |
Place (neu) |
---|---|
nearbySearch() |
searchNearby()
|
PlaceSearchRequest |
SearchNearbyRequest |
Es ist ein Callback erforderlich, um das Ergebnisobjekt und die google.maps.places.PlacesServiceStatus -Antwort zu verarbeiten. |
Verwendet Promises und funktioniert asynchron. |
Erfordert ein Häkchen bei PlacesServiceStatus . |
Keine Statusprüfung erforderlich, Standardfehlerbehandlung kann verwendet werden. |
Unterstützt nur die Standortvoreingenommenheit. | Unterstützt Standortvorgaben und Standortbeschränkungen. |
Es werden alle verfügbaren Datenfelder zurückgegeben (ein Teil der unterstützten Felder). Die Anfrage kann nicht auf bestimmte Felder beschränkt werden. | Es werden nur die angeforderten Felder mit Ortsdaten zurückgegeben. Die Klasse Place bietet eine erweiterte und regelmäßig aktualisierte Auswahl an Feldern. |
Begrenzt auf eine feste Anzahl von Ortstypen. | Sie haben Zugriff auf eine erweiterte und regelmäßig aktualisierte Auswahl von Ortstypen. |
Unterstützte textbasierte Suche mit dem Keyword. | Die textbasierte Suche wird nicht unterstützt. Verwenden Sie stattdessen Text Search (New). |
Codevergleich
In diesem Abschnitt wird Code für Methoden zur Suche in der Nähe verglichen, um die Unterschiede zwischen dem Places-Dienst und der Place-Klasse zu veranschaulichen. Die Code-Snippets zeigen den Code, der für die jeweilige API erforderlich ist, um eine textbasierte Suchanfrage zu stellen.
Nearby Search (Legacy)
Mit der bisherigen Nearby Search können Sie anhand eines Suchbegriffs oder Typs nach Orten innerhalb eines bestimmten Bereichs suchen. Es ist nicht möglich, Suchanfragen mithilfe von Ortsdatenfeldern einzuschränken. Bei jeder Anfrage werden also alle verfügbaren Felder zurückgegeben.
Im folgenden Snippet wird nearbySearch()
aufgerufen, um Informationen zu Restaurants in Sydney, Australien, zurückzugeben. Die Anfrage ist synchron, verwendet einen Rückruf und enthält eine erforderliche bedingte Prüfung für PlacesServiceStatus
.
let map;
let service;
function initMap() {
const sydney = new google.maps.LatLng(-33.867, 151.195);
map = new google.maps.Map(document.getElementById("map"), {
center: sydney,
zoom: 15,
});
const request = {
location: sydney,
radius: '500',
type: ['restaurant']
};
service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
}
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
// Helper function to create markers.
function createMarker(place) {
if (!place.geometry || !place.geometry.location) return;
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
Weitere Informationen
Nearby Search (New)
Die neue Version der Nearby Search bietet gegenüber der Vorgängerversion folgende Vorteile:
- Möglichkeit, anzugeben, welche Felder mit Ortsdaten zurückgegeben werden sollen.
- Die Verwendung von Promises, die einen asynchronen Betrieb ermöglichen.
- Es ist nicht erforderlich, den Status von
PlacesService
zu prüfen. Stattdessen kann die standardmäßige Fehlerbehandlung verwendet werden.
Das folgende Code-Snippet zeigt eine Funktion, die eine Nearby Search-Anfrage für Restaurants stellt. In diesem Beispiel wird die Option rankPreference
verwendet, um Suchergebnisse nach Beliebtheit zu sortieren. In der vorherigen Version wird das Ranking mit der Option rankBy
angegeben. Da die searchNearby()
-Methode den Operator await
verwendet, kann sie nur innerhalb einer async
-Funktion verwendet werden.
async function nearbySearch() {
// Restrict within the map viewport.
let center = new google.maps.LatLng(52.369358, 4.889258);
const request = {
// Required parameters.
fields: ["displayName", "location", "businessStatus"],
locationRestriction: {
center: center,
radius: 500,
},
// Optional parameters.
includedPrimaryTypes: ["restaurant"],
maxResultCount: 5,
rankPreference: google.maps.places.SearchNearbyRankPreference.POPULARITY,
language: "en-US",
region: "us",
};
const { places } = await google.maps.places.Place.searchNearby(request);
if (places.length) {
console.log(places);
// Create a new bounds, which will be extended with each result.
const bounds = new google.maps.LatLngBounds();
// Loop through and get all the results.
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");
}
}