Identyfikatory miejsc

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

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 APIRoads 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