Na tej stronie wyjaśniamy różnice między wyszukiwaniem w pobliżu używanym w klasie Place
(nowa) a klasą PlacesService
(starsza) oraz podajemy fragmenty kodu do porównania.
- Starsza wersja
PlacesService
ma metodęnearbySearch()
, która umożliwia wyszukiwanie miejsc na określonym obszarze według słowa kluczowego lub typu. - Klasa
Place
ma metodęsearchNearby()
, która umożliwia wyszukiwanie miejsc na określonym obszarze według typu miejsca. Korzysta ona z rozszerzonego wyboru pól danych o miejscach i typów miejsc, co zapewnia większą elastyczność.
W tabeli poniżej znajdziesz główne różnice w metodach wyszukiwania w pobliżu między klasą Place
a klasą PlacesService
:
PlacesService (starsza wersja) |
Place (Nowy) |
---|---|
nearbySearch() |
searchNearby()
|
PlaceSearchRequest |
SearchNearbyRequest |
Wymaga użycia wywołania zwrotnego do obsługi obiektu wyników i google.maps.places.PlacesServiceStatus odpowiedzi. |
Korzysta z obiektów Promise i działa asynchronicznie. |
Wymaga sprawdzenia PlacesServiceStatus . |
Nie wymaga sprawdzania stanu, można użyć standardowej obsługi błędów. Więcej informacji |
Obsługuje tylko określanie lokalizacji. | Obsługuje preferencje lokalizacyjne i ograniczenia lokalizacyjne. |
Zwraca wszystkie dostępne pola danych (podzbiór obsługiwanych pól); nie można ograniczyć go do konkretnych pól. | Zwraca tylko wybrane pola danych o miejscu. Klasa Place oferuje rozszerzony i regularnie aktualizowany wybór pól. |
Ograniczone do stałego zestawu typów miejsc. | Uzyskaj dostęp do rozszerzonego i regularnie aktualizowanego wyboru typów miejsc. |
Obsługiwane wyszukiwanie tekstowe za pomocą słowa kluczowego. | Wyszukiwanie na podstawie tekstu nie jest obsługiwane. Zamiast tego użyj wyszukiwania tekstowego (nowego). |
Porównanie kodu
W tej sekcji porównujemy kod metod wyszukiwania w pobliżu, aby zilustrować różnice między usługą Miejsca a klasą Place. Fragmenty kodu pokazują kod wymagany w poszczególnych interfejsach API do wysyłania żądań wyszukiwania tekstowego.
Wyszukiwanie w pobliżu (starsza wersja)
Starsza wersja wyszukiwania w pobliżu umożliwia wyszukiwanie miejsc na określonym obszarze według słowa kluczowego lub typu. Nie ma możliwości ograniczenia wyszukiwania za pomocą pól danych o miejscu, więc wszystkie dostępne pola są zwracane z każdym żądaniem.
Poniższy fragment kodu pokazuje wywołanie funkcji nearbySearch()
w celu zwrócenia informacji o restauracjach w Sydney w Australii. Żądanie jest synchroniczne, korzysta z wywołania zwrotnego i zawiera wymagane sprawdzenie warunkowe w przypadku 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,
});
}
Więcej informacji
- Zobacz dokumentację starszej wersji wyszukiwania w pobliżu
- Zobacz
searchNearby()
materiał referencyjny
Wyszukiwanie w pobliżu (nowość)
Nowa wersja wyszukiwania w pobliżu jest lepsza od poprzedniej z tych powodów:
- Możliwość określenia, które pola danych o miejscu mają być zwracane.
- używanie obiektów Promise, które umożliwiają działanie asynchroniczne;
- Nie musisz sprawdzać stanu
PlacesService
. Zamiast tego możesz użyć standardowej obsługi błędów.
Poniższy fragment kodu pokazuje funkcję, która wysyła żądanie wyszukiwania w pobliżu restauracji. Ten przykład pokazuje użycie opcji rankPreference
do sortowania wyników wyszukiwania według popularności (w poprzedniej wersji sortowanie było określane za pomocą opcji rankBy
). Metoda searchNearby()
używa operatora await
, dlatego można jej używać tylko w funkcji async
.
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");
}
}
Więcej informacji
- Zobacz pełny przykładowy kod
- Zobacz dokumentację interfejsu Nearby Search (nowa wersja)
- Zobacz
searchNearby()
materiał referencyjny