Interfejs Places API może zwracać szczegółowe informacje o konkretnym miejscu. Na tej stronie
wyjaśniamy różnice między informacjami o miejscu używanymi w klasie Place(nowa wersja) a PlacesService (starsza wersja) oraz podajemy kilka fragmentów kodu do
porównania. W tabeli poniżej znajdziesz niektóre z głównych różnic w korzystaniu z
informacji o miejscu między klasą Place a PlacesService:
PlacesService (starsza wersja) |
Place (nowa wersja) |
|---|---|
getDetails() |
fetchFields() |
PlaceDetailsRequest |
FetchFieldsRequest |
Metody wymagają użycia wywołania zwrotnego do obsługi obiektu wyników i
google.maps.places.PlacesServiceStatus odpowiedzi. |
Używa obietnic i działa asynchronicznie. |
Metody wymagają sprawdzenia PlacesServiceStatus. |
Nie jest wymagane sprawdzanie stanu, można użyć standardowej obsługi błędów. Więcej informacji. |
| Pola danych o miejscu są formatowane za pomocą notacji snake case. | Pola danych o miejscu są formatowane za pomocą notacji camel case. |
| Ograniczone do stałego zestawu typów miejsc i pól danych o miejscu. | Umożliwia rozszerzony wybór regularnie aktualizowanych typów miejsc i pól danych o miejscu. |
Porównanie kodu
W tej sekcji porównujemy 2 podobne fragmenty kodu, 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 informacji o miejscu, a następnie użycia uzyskanych danych o miejscu do dodania znacznika na mapie.
Usługa Places (starsza wersja)
Poniższy skrócony fragment kodu pokazuje, jak wysłać żądanie informacji o miejscu za pomocą PlacesService. Żądanie używa wywołania zwrotnego i zawiera wymagane sprawdzenie warunkowe PlacesServiceStatus. W treści żądania określono wymagane pola danych o miejscu.
function getPlaceDetails() {
// Instantiate the Places Service.
const service = new google.maps.places.PlacesService(map);
// Make a request using the Place ID.
const request = {
placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
fields: ["name", "formatted_address", "place_id", "geometry"],
};
// Request place details.
service.getDetails(request, (place, status) => {
// Check whether PlacesServiceStatus is OK.
if (
status === google.maps.places.PlacesServiceStatus.OK &&
place &&
place.geometry &&
place.geometry.location
) {
// Log the result.
console.log(place.name);
console.log(place.formatted_address);
// Add a marker for the place.
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
});
}
Więcej informacji
- Zobacz pełny przykład kodu
- Dokumentacja informacji o miejscu
getDetailsodniesienie
Klasa Place (nowa wersja)
Poniższy skrócony fragment kodu pokazuje, jak wysłać żądanie informacji o miejscu za pomocą klasy Place. Żądanie jest asynchroniczne i nie zawiera sprawdzania stanu (można użyć standardowej obsługi błędów). Do utworzenia nowej instancji Place używany jest identyfikator miejsca, który służy do wysłania żądania (fetchFields()). Wymagane pola danych o miejscu nie są przekazywane, dopóki nie zostanie wywołana funkcja fetchFields(), co zapewnia większą elastyczność. Ponieważ metoda fetchFields() używa operatora await, można jej używać tylko w funkcji async.
async function getPlaceDetails() {
// Use place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
requestedLanguage: "en", // optional
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// Log the result.
console.log(place.displayName);
console.log(place.formattedAddress);
// Add an Advanced Marker.
const marker = new google.maps.marker.AdvancedMarkerElement({
map,
position: place.location,
title: place.displayName,
});
}
Więcej informacji
- Zobacz pełny przykład kodu
- Dokumentacja informacji o miejscu
- Informacje o
fetchFields()