Na tej stronie wyjaśniamy różnice między wyszukiwaniem w pobliżu używanym w klasie
Place (nowa wersja) a
PlacesService
(starsza wersja) oraz przedstawiamy kilka fragmentów kodu do porównania.
- Starsza wersja
PlacesServicema metodęnearbySearch(), która umożliwia wyszukiwanie miejsc na określonym obszarze według słowa kluczowego lub typu. - Klasa
Placema metodęsearchNearby(), która umożliwia wyszukiwanie miejsc na określonym obszarze według typu miejsca. Wykorzystuje ona rozszerzony wybór pól danych miejsca i typów miejsc, co zapewnia większą elastyczność.
W tabeli poniżej wymieniliśmy niektóre główne różnice w metodach wyszukiwania w pobliżu
między klasą Place a PlacesService:
PlacesService (starsza wersja) |
Place (nowa wersja) |
|---|---|
nearbySearch() |
searchNearby()
|
PlaceSearchRequest |
SearchNearbyRequest |
Wymaga użycia wywołania zwrotnego do obsługi obiektu wyników i
google.maps.places.PlacesServiceStatus odpowiedzi. |
Używa obietnic 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 preferencje lokalizacji. | Obsługuje preferencje lokalizacji i ograniczenia lokalizacji. |
| Zwraca wszystkie dostępne pola danych (a podzbiór obsługiwanych pól); nie można ograniczyć go do określonych pól. | Zwraca tylko żądane pola danych miejsca. Klasa Place oferuje rozszerzony i regularnie
aktualizowany wybór pól. |
| Ograniczony do stałego zestawu typów miejsc. | Dostęp do rozszerzonego i regularnie aktualizowanego wyboru typów miejsc. |
| Obsługiwane wyszukiwanie tekstowe za pomocą słowa kluczowego. | Wyszukiwanie tekstowe nie jest obsługiwane. Zamiast niego użyj wyszukiwania tekstowego (nowa wersja). |
Porównanie kodu
W tej sekcji porównujemy kod metod wyszukiwania w pobliżu, aby zilustrować różnice między usługą Places a klasą Place. Fragmenty kodu pokazują kod wymagany w każdym interfejsie API do wysłania żądania 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 można ograniczyć wyszukiwania za pomocą pól danych miejsca, dlatego każde żądanie zwraca wszystkie dostępne pola.
Poniższy fragment kodu pokazuje wywołanie nearbySearch() w celu zwrócenia informacji o restauracjach w Sydney w Australii. Żądanie jest synchroniczne, używa wywołania zwrotnego i zawiera wymagane sprawdzenie warunkowe 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
- Zapoznaj się z dokumentacją starszej wersji wyszukiwania w pobliżu
- Zapoznaj się z dokumentacją
searchNearby()
Wyszukiwanie w pobliżu (nowa wersja)
Nowa wersja wyszukiwania w pobliżu jest lepsza od poprzedniej w następujących aspektach:
- Możliwość określenia, które pola danych miejsca mają być zwracane.
- Użycie obietnic, które umożliwiają działanie asynchroniczne.
- Nie trzeba sprawdzać stanu
PlacesService. Zamiast tego można użyć standardowej obsługi błędów.
Poniższy fragment kodu pokazuje funkcję, która wysyła żądanie wyszukiwania w pobliżu restauracji. W tym przykładzie pokazujemy, jak użyć opcji rankPreference, aby uporządkować wyniki wyszukiwania według popularności (w poprzedniej wersji ranking był określany za pomocą opcji rankBy). Ponieważ metoda searchNearby() używa operatora await, 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
- Zapoznaj się z dokumentacją wyszukiwania w pobliżu (nowa wersja)
- Zapoznaj się z dokumentacją
searchNearby()