Wprowadzenie
Identyfikatory miejsc jednoznacznie identyfikują miejsce w bazie danych Miejsc Google i w Mapach Google. Identyfikatory miejsc są akceptowane w żądaniach wysyłanych do tych interfejsów API Map Google:
- Pobieranie adresu na podstawie identyfikatora miejsca w interfejsie Geocoding API i usłudze geokodowania w interfejsie Maps JavaScript API.
- Określanie punktu początkowego, docelowego i pośrednich punktów na trasie w interfejsie Routes API i Directions API (starsza wersja) oraz w usłudze wyznaczania trasy w interfejsie Maps JavaScript API (starsza wersja).
- Określanie punktów początkowych i docelowych w interfejsie Routes API oraz w interfejsie Distance Matrix API (starsza wersja) i usłudze macierzy odległości, Maps JavaScript API (starsza wersja).
- Pobieranie szczegółów miejsca w interfejsie Places API (nowym), pakiecie Places SDK na Androida (nowym), pakiecie Places SDK na iOS (nowym) i bibliotece Miejsc.
- Używanie parametrów identyfikatora miejsca w interfejsie Maps Embed API.
- Pobieranie zapytań z adresów URL w Mapach.
- Wyświetlanie ograniczeń prędkości w interfejsie Roads API.
- Wyszukiwanie i stylizowanie wielokątów granic w stylu opartym na danych w przypadku granic.
Znajdowanie identyfikatora konkretnego miejsca
Szukasz identyfikatora konkretnego miejsca? Aby wyszukać miejsce i uzyskać jego identyfikator, skorzystaj z wyszukiwarki identyfikatorów miejsc poniżej:
Możesz też wyświetlić narzędzie do wyszukiwania identyfikatorów miejsc wraz z kodem w dokumentacji interfejsu Maps JavaScript API.
Przegląd
Identyfikator miejsca to tekstowy identyfikator, który jednoznacznie identyfikuje miejsce. Długość identyfikatora może się różnić (nie ma maksymalnej długości identyfikatorów miejsc). Przykłady:
-
ChIJgUbEo8cfqokR5lP9_Wh_DaM
-
GhIJQWDl0CIeQUARxks3icF8U8A
-
EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0EiGhIYChQKEgnRTo6ixx-qiRHo_bbmkCm7ZRAN
-
EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0E
-
IhoSGAoUChIJ0U6OoscfqokR6P225pApu2UQDQ
Identyfikatory miejsc są dostępne w przypadku większości lokalizacji, w tym firm, punktów orientacyjnych, parków i skrzyżowań. To samo miejsce lub lokalizacja może mieć kilka różnych identyfikatorów miejsca. Identyfikatory miejsc mogą się z czasem zmieniać.
Możesz używać tego samego identyfikatora miejsca w interfejsie Places API i wielu interfejsach API Google Maps Platform. Możesz na przykład użyć tego samego identyfikatora miejsca, aby odwoływać się do miejsca w Places API, Maps JavaScript API, Geocoding API, Maps Embed API i Roads API.
Pobieranie szczegółów miejsca za pomocą identyfikatora miejsca
Typowym sposobem używania identyfikatorów miejsc jest wyszukiwanie miejsca (np. za pomocą interfejsu Places API lub biblioteki Places w Maps JavaScript API), a następnie używanie zwróconego identyfikatora miejsca do pobierania szczegółów miejsca. Możesz zapisać identyfikator miejsca i użyć go później, aby pobrać te same szczegóły miejsca. Więcej informacji o zapisywaniu identyfikatorów miejsc znajdziesz poniżej.
Przykład użycia pakietu SDK Miejsc na iOS
Identyfikator miejsca to tekstowy identyfikator, który jednoznacznie identyfikuje miejsce. W pakiecie SDK Miejsc na iOS możesz pobrać identyfikator miejsca z obiektu GMSPlace
. Możesz zapisać identyfikator miejsca i użyć go później, aby ponownie pobrać obiekt GMSPlace
.
Aby uzyskać miejsce według identyfikatora, wywołaj funkcję GMSPlacesClient
fetchPlaceFromPlaceID:
, przekazując te parametry:
- Ciąg tekstowy zawierający identyfikator miejsca.
- Co najmniej 1
GMSPlaceField
określający typy danych do zwrócenia. - token sesji, jeśli połączenie jest wykonywane w celu zakończenia zapytania autouzupełniania; W przeciwnym razie przekaż wartość nil.
GMSPlaceResultCallback
do obsługi wyniku.
Interfejs API wywołuje określoną metodę wywołania zwrotnego, przekazując obiekt GMSPlace
. Jeśli miejsce nie zostanie znalezione, obiekt miejsca będzie miał wartość nil.
Pakiet SDK Miejsc w Swift na iOS
// Initialize Places Swift Client. let placesClient = PlacesClient.shared // A hotel in Saigon with an attribution let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Fetch Place Request. let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.displayName] ) Task { switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): print("The selected place is: \(place.displayName): \(String(describing: place.description))") case .failure(let placesError): print("Place not found: \(placeID); \(placesError)") } }
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
Zapisywanie identyfikatorów miejsc do późniejszego wykorzystania
Identyfikatory miejsc nie podlegają ograniczeniom dotyczącym buforowania określonym w artykule 3.2.3(b) Warunków korzystania z usługi Google Maps Platform. Dzięki temu możesz przechowywać wartości identyfikatorów miejsc do późniejszego wykorzystania.
Odświeżanie zapisanych identyfikatorów miejsc
Identyfikatory miejsc mogą się zmieniać z powodu aktualizacji bazy danych Map Google, dlatego Google zaleca odświeżanie identyfikatorów miejsc, które mają więcej niż 12 miesięcy. Możesz bezpłatnie odświeżyć identyfikatory miejsc, wysyłając żądanie szczegółów miejsca i określając tylko pole GMSPlaceFieldPlaceID
w parametrze fields
.
To wywołanie uruchamia kod SKU Places Details – ID Refresh.
Kody błędów podczas korzystania z identyfikatorów miejsc
INVALID_REQUEST
Kod stanu INVALID_REQUEST
oznacza, że podany identyfikator miejsca jest nieprawidłowy. INVALID_REQUEST
może być zwracany, gdy identyfikator miejsca został skrócony lub w inny sposób zmodyfikowany i nie jest już prawidłowy.
NOT_FOUND
Kod stanu NOT_FOUND
oznacza, że podany identyfikator miejsca jest przestarzały. Identyfikator miejsca może stać się nieaktualny, jeśli firma zostanie zamknięta lub przeniesiona do nowej lokalizacji. Identyfikatory miejsc mogą się też zmieniać z powodu aktualizacji bazy danych Map Google. W takich przypadkach miejsce może otrzymać nowy identyfikator, a stary identyfikator zwróci odpowiedź NOT_FOUND
.
Aby odświeżyć wyniki w przypadku nieaktualnego identyfikatora miejsca, zapisz pierwotne żądanie, które zwróciło każdy identyfikator miejsca, i w razie potrzeby ponownie je wyślij. Pamiętaj, że ponownie przesłana prośba jest rozliczana według odpowiedniego numeru SKU.
Niektóre typy identyfikatorów miejsc mogą czasami powodować odpowiedź NOT_FOUND
lub interfejs API może zwracać w odpowiedzi inny identyfikator miejsca. Te typy identyfikatorów miejsc obejmują:
- Adresy, które nie istnieją w Mapach Google jako dokładne adresy, ale są wywnioskowane z zakresu adresów.
- segmenty długiej trasy, w przypadku których w żądaniu podano też miasto lub miejscowość;
- Zbiory.
- miejsca z komponentem adresu typu
subpremise
;
Identyfikatory te często mają postać długiego ciągu znaków (nie ma maksymalnej długości identyfikatorów miejsc). Na przykład:
EpID4LC14LC_4LCo4LCv4LGN4LCo4LCX4LCw4LGNIC0g4LC44LGI4LCm4LGN4LCs4LC-4LCm4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSAmIOCwteCwv-CwqOCwr-CxjSDgsKjgsJfgsLDgsY0g4LCu4LGG4LCv4LC_4LCo4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSwg4LC14LC_4LCo4LCv4LGNIOCwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwsuCwleCxjeCwt-CxjeCwruCwv-CwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwuOCwsOCxguCwsOCxjSDgsKjgsJfgsLDgsY0g4LC14LGG4LC44LGN4LCf4LGNLCDgsLjgsK_gsYDgsKbgsL7gsKzgsL7gsKbgsY0sIOCwueCxiOCwpuCwsOCwvuCwrOCwvuCwpuCxjSwg4LCk4LGG4LCy4LCC4LCX4LC-4LCjIDUwMDA1OSwg4LCt4LC-4LCw4LCk4LCm4LGH4LC24LCCImYiZAoUChIJ31l5uGWYyzsR9zY2qk9lDiASFAoSCd9ZebhlmMs7Efc2NqpPZQ4gGhQKEglDz61OZpjLOxHgDJCFY-o1qBoUChIJi37TW2-YyzsRr_uv50r7tdEiCg1MwFcKFS_dyy4