Opis
Funkcje dostępne w bibliotece miejsc oraz interfejsie Maps JavaScript API umożliwiają aplikacji wyszukiwanie miejsc (zdefiniowanych w tym interfejsie API jako instytucje, lokalizacje geograficzne lub ważne ciekawe miejsca) znajdujących się na zdefiniowanym obszarze, np. na granicach mapy lub wokół stałego punktu.
Interfejs Places API udostępnia funkcję autouzupełniania, dzięki której aplikacje mogą korzystać z funkcji autouzupełniania w polu wyszukiwania Map Google. Gdy użytkownik zacznie wpisywać adres, autouzupełnianie uzupełni resztę. Więcej informacji znajdziesz w dokumentacji autouzupełniania.
Pierwsze kroki
Jeśli nie masz doświadczenia z interfejsem Maps JavaScript API lub z JavaScriptem, zalecamy zapoznanie się z językiem JavaScript i uzyskaniem klucza interfejsu API, zanim rozpoczniesz.
Włącz interfejsy API
Zanim użyjesz biblioteki Miejsc w interfejsie Maps JavaScript API, upewnij się, że interfejs Places API jest włączony w Google Cloud Console w tym samym projekcie, który został skonfigurowany na potrzeby Maps JavaScript API.
Aby wyświetlić listę włączonych interfejsów API:
- Otwórz konsolę Google Cloud.
- Kliknij przycisk Wybierz projekt, a następnie wybierz projekt skonfigurowany na potrzeby interfejsu Maps JavaScript API i kliknij Otwórz.
- Na liście interfejsów API w panelu znajdź Places API.
- Jeśli widzisz na liście interfejs Places API, jest on już włączony. Jeśli interfejsu API nie ma na liście, włącz go:
- U góry strony wybierz WŁĄCZ INTERFEJSY API I USŁUGI, aby wyświetlić kartę Biblioteka. Możesz też wybrać Biblioteka w menu po lewej stronie.
- Wyszukaj interfejs Places API, a następnie wybierz go z listy wyników.
- Wybierz WŁĄCZ. Po zakończeniu procesu Places API pojawi się na liście interfejsów API w panelu.
Wczytuję bibliotekę
Usługa Miejsca jest samodzielną biblioteką, niezależną od głównego kodu interfejsu Maps JavaScript API. Aby korzystać z funkcji dostępnych w tej bibliotece, musisz ją najpierw wczytać za pomocą parametru libraries
w adresie URL wczytywania interfejsu API Map Google:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap">
</script>
Więcej informacji znajdziesz w artykule Omówienie bibliotek.
Dodawanie interfejsu Places API do listy ograniczeń interfejsu API klucza interfejsu API
Zastosowanie ograniczeń interfejsu API do kluczy ogranicza możliwość wykorzystania klucza interfejsu API do co najmniej 1 interfejsu API lub pakietu SDK. Żądania do interfejsu API lub pakietu SDK powiązane z kluczem interfejsu API będą przetwarzane. Żądania wysyłane do interfejsu API lub pakietu SDK niepowiązane z kluczem API zakończą się niepowodzeniem. Aby ograniczyć użycie klucza interfejsu API w bibliotece Miejsc, Maps JavaScript API:- Otwórz Google Cloud Console.
- Kliknij menu projektu i wybierz projekt zawierający klucz interfejsu API, który chcesz zabezpieczyć.
- Kliknij przycisk menu
i wybierz Google Maps Platform > Dane logowania.
- Na stronie Dane logowania kliknij nazwę klucza interfejsu API, który chcesz zabezpieczyć.
- Na stronie Ogranicz klucz interfejsu API i zmień jego nazwę ustaw ograniczenia:
- Ograniczenia interfejsów API
- Wybierz Ogranicz klucz.
- Kliknij Wybierz interfejsy API i zaznacz opcje Map JavaScript API oraz Places API.
(Jeśli któregoś z interfejsów API nie ma na liście, musisz go enable).
- Kliknij ZAPISZ.
Limity i zasady dotyczące wykorzystania
Limity
Biblioteka miejsc współdzieli limit wykorzystania z interfejsem Places API zgodnie z opisem w dokumentacji dotyczącej limitów wykorzystania interfejsu Places API.
Zasady
Korzystanie z biblioteki Miejsc Google Maps JavaScript API musi być zgodne z zasadami dotyczącymi interfejsu Places API.
Wyszukiwania miejsc
Usługa Miejsca umożliwia wyszukiwanie następujących typów:
- Znajdź miejsce z zapytania zwraca miejsce na podstawie zapytania tekstowego (np. nazwę lub adres miejsca).
- Znajdź miejsce na podstawie numeru telefonu zwraca miejsce na podstawie numeru telefonu.
- Wyszukiwanie w pobliżu zwraca listę miejsc w pobliżu na podstawie lokalizacji użytkownika.
- Wyszukiwanie tekstowe zwraca listę miejsc w pobliżu na podstawie wyszukiwanego ciągu, np. „Pizza”.
- Prośby o szczegóły miejsca zwracają bardziej szczegółowe informacje o konkretnym miejscu, w tym opinie użytkowników.
Wyświetlane informacje mogą obejmować instytucje – takie jak restauracje, sklepy i biura – oraz wyniki geokodu, które wskazują adresy, obszary polityczne, takie jak miasta i miasta, oraz inne ciekawe miejsca.
Znajdowanie próśb o miejsce
Żądanie Znajdź miejsce pozwala wyszukać miejsce według zapytania tekstowego lub numeru telefonu. Istnieją 2 rodzaje próśb o znalezienie miejsca:
Znajdź miejsce na podstawie zapytania
Funkcja Znajdź miejsce z zapytania wymaga podania tekstu i zwraca miejsce. Może to być dowolny rodzaj danych o miejscu, np. nazwa firmy lub adres. Aby utworzyć funkcję Znajdź miejsce z żądania zapytania, wywołaj metodę findPlaceFromQuery()
obiektu PlacesService
, która pobiera te parametry:
query
(wymagany) Ciąg tekstowy, który ma zostać wyszukany, np. „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria obiektu. Wszystkie inne typy danych wejściowych mogą generować błędy i nie możemy zagwarantować, że zwrócą prawidłowe wyniki. Interfejs Places API zwróci dopasowania kandydujące na podstawie tego ciągu i porządkuje wyniki na podstawie ich postrzeganej trafności.fields
(wymagany) Co najmniej jedno pole określające typy danych dotyczących miejsca do zwrócenia.locationBias
(opcjonalnie) Współrzędne określające obszar wyszukiwania. Może to być jedna z tych wartości:- Zbiór współrzędnych szerokości i długości geograficznej określonych jako LatLngLiteral lub obiekt LatLng
- Prostokątne granice (2 pary szerokości i długości lub obiekt LatLngBounds)
- Promień (w metrach) wyśrodkowany na szerokości/długości geograficznej
Musisz też przekazać metodę wywołania zwrotnego do findPlaceFromQuery()
, aby obsługiwać obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus
.
Poniższy przykład przedstawia wywołanie findPlaceFromQuery()
o wyszukiwaniu „Muzeum Sztuki Współczesnej Australia” i uwzględnieniem pól name
i geometry
.
var map; var service; var infowindow; function initMap() { var sydney = new google.maps.LatLng(-33.867, 151.195); infowindow = new google.maps.InfoWindow(); map = new google.maps.Map( document.getElementById('map'), {center: sydney, zoom: 15}); var request = { query: 'Museum of Contemporary Art Australia', fields: ['name', 'geometry'], }; var service = new google.maps.places.PlacesService(map); service.findPlaceFromQuery(request, function(results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { createMarker(results[i]); } map.setCenter(results[0].geometry.location); } }); }Zobacz przykład
Znajdź miejsce na podstawie numeru telefonu
Funkcja Znajdź miejsce na podstawie numeru telefonu pobiera numer telefonu i zwraca miejsce. Aby utworzyć żądanie Znajdź miejsce na podstawie numeru telefonu, wywołaj metodę findPlaceFromPhoneNumber()
funkcji PlacesService
, która pobiera te parametry:
phoneNumber
(wymagany) Numer telefonu w formacie E.164.fields
(wymagany) Co najmniej jedno pole określające typy danych dotyczących miejsca do zwrócenia.locationBias
(opcjonalnie) – współrzędne definiujące obszar wyszukiwania. Może to być:- Zbiór współrzędnych szerokości i długości geograficznej określonych jako LatLngLiteral lub obiekt LatLng
- Prostokątne granice (cztery punkty długości/szerokości geograficznej lub obiekt LatLngBounds)
- Promień (w metrach) wyśrodkowany na szerokości/długości geograficznej
Musisz też przekazać metodę wywołania zwrotnego do findPlaceFromPhoneNumber()
, aby obsługiwać obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus
.
Pola (Znajdź metody związane z miejscem)
Parametr fields
służy do określania tablicy typów danych dotyczących miejsc do zwrócenia.
Na przykład: fields: ['formatted_address', 'opening_hours', 'geometry']
.
Przy określaniu wartości złożonych użyj kropki. Na przykład: opening_hours.weekday_text
.
Pola odpowiadają wynikom wyszukiwania miejsc i są podzielone na 3 kategorie rozliczeń: Podstawowa, Kontakt oraz Atmosfera. Płatności za pola podstawowe są naliczane według stawki podstawowej i nie powodują naliczenia żadnych dodatkowych opłat. Pola kontaktu i atmosfery są rozliczane według wyższej stawki. Więcej informacji znajdziesz w cenniku. Atrybucje (html_attributions
) są zawsze zwracane przy każdym wywołaniu, niezależnie od tego, czy zażądano zawartości pola.
Podstawowe
Kategoria Podstawowa zawiera te pola:
business_status
, formatted_address
, geometry
,
icon
,icon_mask_base_uri
, icon_background_color
,
name
, permanently_closed
(wycofane),
photos
, place_id
, plus_code
, types
Nawiązanie kontaktu,
Kategoria Kontakt zawiera następujące pole:opening_hours
(wycofane z Biblioteki miejsc, Maps JavaScript API. użyj prośby o szczegóły miejsca, aby uzyskać wyniki (
opening_hours
).
Atmosfera
Kategoria atmosfery zawiera te pola:price_level
, rating
, user_ratings_total
Metody findPlaceFromQuery()
i findPlaceFromPhoneNumber()
korzystają z tego samego zestawu pól i mogą zwracać te same pola w odpowiedziach.
Ustawianie odchyleń od lokalizacji (znajdowanie metod związanych z miejscem)
Użyj parametru locationBias
, aby uzyskać wyniki dotyczące funkcji Znajdź miejsce dla danego obszaru. locationBias
możesz ustawić na te sposoby:
Uprzedzenia w określonym obszarze:
locationBias: {lat: 37.402105, lng: -122.081974}
Zdefiniuj prostokątny obszar do wyszukiwania:
locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}
Możesz też użyć właściwości LatLngBounds.
Zdefiniuj promień wyszukiwania (w metrach) wyśrodkowany na konkretnym obszarze:
locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}
Żądania wyszukiwania w pobliżu
Wyszukiwanie w pobliżu umożliwia wyszukiwanie miejsc na określonym obszarze według słowa kluczowego lub typu. Wyszukiwanie w pobliżu musi zawsze obejmować lokalizację, którą można określić na 2 sposoby:
-
LatLngBounds
. - pole koliste zdefiniowane jako połączenie właściwości
location
– czyli środek okręgu, który wskazuje środek okręgu jako obiektLatLng
– i promień mierzony w metrach.
Wyszukiwanie w pobliżu w miejscach jest inicjowane przez wywołanie metody nearbySearch()
funkcji
PlacesService
, która zwraca tablicę obiektów
PlaceResult
. Pamiętaj, że od wersji 3.9 metoda nearbySearch()
zastępuje metodę search()
.
service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback);
Ta metoda pobiera żądanie z tymi polami:
- Jeden z tych warunków:
bounds
, który musi być obiektemgoogle.maps.LatLngBounds
definiującym prostokątny obszar wyszukiwania, lublocation
iradius
. W drugim jest dostępny obiektgoogle.maps.LatLng
, a drugi to prosta liczba całkowita określająca promień okręgu w metrach. Maksymalny dozwolony promień to 50 000 metrów. Pamiętaj, że gdyrankBy
ma wartość DISTANCE, musisz określićlocation
, ale nie możesz określić wartościradius
anibounds
.
keyword
(opcjonalny) – hasło, które ma zostać dopasowane do wszystkich dostępnych pól, w tym między innymi imienia i nazwiska, typu i adresu, a także opinii klientów i innych treści firm zewnętrznych.minPriceLevel
imaxPriceLevel
(opcjonalne) – ogranicza wyniki tylko do tych miejsc w określonym zakresie. Prawidłowe wartości mieszczą się w zakresie od 0 (najbardziej korzystna cena) do 4 (najdroższa) włącznie.name
Wycofano. Odpowiednik:keyword
. Wartości w tym polu są łączone z wartościami w polukeyword
i przekazywane jako część tego samego ciągu wyszukiwania.openNow
(opcjonalny) – wartość logiczna wskazująca, że usługa Miejsca powinna zwracać tylko te miejsca, które są otwarte w momencie wysyłania zapytania. Jeśli w zapytaniu uwzględnisz ten parametr, miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane. Ustawienie opcjiopenNow
nafalse
nie powoduje żadnego efektu.rankBy
(opcjonalny) – określa kolejność, w jakiej wyświetlane są wyniki. Możliwe wartości:google.maps.places.RankBy.PROMINENCE
(domyślnie). Ta opcja umożliwia sortowanie wyników na podstawie ich ważności. Miejsca w określonym promieniu w rankingu będą faworyzowane przez pasujące, ale mniej widoczne miejsca. Na widoczność mają wpływ pozycja miejsca w indeksie Google, popularność globalna i inne czynniki. Jeśli podaszgoogle.maps.places.RankBy.PROMINENCE
, parametrradius
jest wymagany.google.maps.places.RankBy.DISTANCE
. Ta opcja powoduje sortowanie wyników w kolejności rosnącej według odległości od określonego elementulocation
(wymagane). Pamiętaj, że jeśli podaszRankBy.DISTANCE
, nie możesz określić niestandardowych właściwościbounds
aniradius
. Jeśli podaszRankBy.DISTANCE
, wymagany jest co najmniej 1 z tych elementów:keyword
,name
lubtype
.
type
– ogranicza wyniki do miejsc pasujących do określonego typu. Można określić tylko 1 typ (jeśli podasz więcej niż 1 typ, wszystkie typy po pierwszej pozycji będą ignorowane). Zobacz listę obsługiwanych typów.
Musisz też przekazać metodę wywołania zwrotnego do nearbySearch()
, by obsługiwać obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus
.
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, 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]); } } }
Żądania wyszukiwania tekstowego
Usługa wyszukiwania tekstu w Miejscach Google to usługa internetowa, która zwraca informacje o zestawie miejsc na podstawie ciągu znaków, na przykład „pizza w Krakowie” lub „sklepy obuwnicze w pobliżu Ottawy”. W odpowiedzi usługa przesyła listę miejsc pasujących do ciągu tekstowego i ustawione odchylenie do lokalizacji. Odpowiedź wyszukiwania będzie zawierać listę miejsc. Możesz wysłać prośbę o szczegóły miejsca, aby uzyskać więcej informacji o dowolnym miejscu w odpowiedzi.
Wyszukiwanie tekstu rozpoczyna się od wywołania metody textSearch()
obiektu PlacesService
.
service = new google.maps.places.PlacesService(map); service.textSearch(request, callback);
Ta metoda pobiera żądanie z tymi polami:
query
(wymagany) – ciąg znaków, który ma zostać wyszukany, na przykład „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria obiektu. Inne typy danych wejściowych mogą generować błędy i nie możemy zagwarantować, że zwrócą prawidłowe wyniki. Usługa Miejsca zwraca dopasowania kandydujące na podstawie tego ciągu i uporządkuje wyniki na podstawie ich postrzeganej trafności. Ten parametr staje się opcjonalny, jeśli parametrtype
jest też używany w żądaniu wyszukiwania.- Opcjonalnie:
openNow
– wartość logiczna wskazująca, że usługa Miejsca powinna zwracać tylko te miejsca, które w momencie wysyłania zapytania są otwarte. Jeśli w zapytaniu uwzględnisz ten parametr, miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane. Ustawienie opcjiopenNow
nafalse
nie powoduje żadnego efektu.minPriceLevel
imaxPriceLevel
– ogranicza wyniki tylko do tych miejsc w ramach określonego poziomu cenowego. Prawidłowe wartości mieszczą się w zakresie od 0 (najdroższa cena) do 4 (najdroższa) włącznie.- Jeden z tych warunków:
bounds
– obiektgoogle.maps.LatLngBounds
definiujący prostokąt, w którym ma być przeprowadzone wyszukiwanie, lub- a
location
iradius
– możesz upowszechniać wyniki do określonego kręgu, przekazując parametrylocation
iradius
. Spowoduje to, że usługa Miejsca będzie preferować wyświetlanie wyników z tego kręgu. Wyniki spoza zdefiniowanego obszaru mogą być nadal wyświetlane. Do lokalizacji pobierany jest obiektgoogle.maps.LatLng
, a dla promienia podana jest prosta liczba całkowita określająca promień okręgu w metrach. Maksymalny dozwolony promień to 50 000 metrów.
type
– ogranicza wyniki do miejsc pasujących do określonego typu. Można podać tylko 1 typ (jeśli podasz więcej niż 1 typ, wszystkie typy kolejne będą ignorowane). Zobacz listę obsługiwanych typów.
Musisz też przekazać metodę wywołania zwrotnego do textSearch()
, by obsługiwać obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus
.
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, radius: '500', query: 'restaurant' }; service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { var place = results[i]; createMarker(results[i]); } } }
Wyszukaj odpowiedzi
Kody stanu
Obiekt odpowiedzi PlacesServiceStatus
zawiera stan żądania i może zawierać informacje o debugowaniu, które pomogą Ci określić, dlaczego nie udało się zrealizować prośby o dodanie miejsca. Możliwe wartości stanu:
INVALID_REQUEST
: to żądanie było nieprawidłowe.OK
: odpowiedź zawiera prawidłowy wynik.OVER_QUERY_LIMIT
: strona przekroczyła limit żądań.REQUEST_DENIED
: strona nie może korzystać z usługi PlacesService.UNKNOWN_ERROR
: nie udało się przetworzyć żądania PlacesService z powodu błędu serwera. Jeśli spróbujesz ponownie, prośba może zostać zrealizowana.ZERO_RESULTS
: nie znaleziono żadnego wyniku dla tego żądania.
Wyniki wyszukiwania miejsc
Funkcje findPlace()
, nearbySearch()
i textSearch()
zwracają tablicę obiektów
PlaceResult
.
Każdy obiekt PlaceResult
może zawierać te właściwości:
business_status
wskazuje stan operacyjny miejsca, jeśli jest to firma. Może zawierać jedną z tych wartości:OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
nie jest zwracana.formatted_address
to ciąg znaków zawierający czytelny dla człowieka adres tego miejsca. Właściwośćformatted_address
jest zwracana tylko w przypadku wyszukiwania tekstowego.Często jest to równoważny adres pocztowy. Pamiętaj, że w niektórych krajach (np. w Wielkiej Brytanii) nie można rozpowszechniać prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.
Sformatowany adres logicznie składa się z co najmniej jednego komponentu adresu. Na przykład adres „111 8th Aleja, Nowy Jork, Nowy Jork” składa się z tych komponentów: „111” (numer domu), „8 Aleja” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu automatycznie. Zamiast tego należy używać poszczególnych komponentów adresu, które oprócz sformatowanego pola adresu zawierają odpowiedź interfejsu API.
geometry
: informacje związane z geometrią miejsca. Obejmuje to m.in.:location
podaje szerokość i długość geograficzną miejsca.viewport
określa preferowany widoczny obszar na mapie podczas wyświetlania tego miejsca.
permanently_closed
(wycofano) to flaga wartości logicznej, która wskazuje, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartośćtrue
). Nie używaj właściwościpermanently_closed
. Zamiast tego użyj narzędziabusiness_status
, aby sprawdzić stan operacyjny firmy.plus_code
(zobacz Otwórz kod lokalizacji i kody plus) to zakodowane odniesienie do lokalizacji utworzone na podstawie współrzędnych geograficznych, które reprezentuje obszar: 1/8000 stopnia (około 14 m x 14 m na równiku) lub mniejszy. Kody plus mogą zastąpić adresy ulic w miejscach, w których one nie istnieją (gdzie budynki nie są ponumerowane lub ulice nie mają nazw).Kod plus jest sformatowany jako kod globalny i kod złożony:
global_code
to czteroznakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).compound_code
to co najmniej 6-znakowy kod lokalny z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tych treści automatycznie.
html_attributions
: tablica atrybucji, która powinna być wyświetlana przy wyświetlaniu wyników wyszukiwania. Każda pozycja w tablicy zawiera tekst HTML odpowiadający pojedynczemu pochodzeniu. Uwaga: jest to podsumowanie wszystkich informacji o atrybucji dotyczących całej odpowiedzi na wyszukiwanie. Oznacza to, że wszystkie obiektyPlaceResult
w odpowiedzi zawierają identyczne listy atrybucji.icon
zwraca adres URL ikony PNG o wymiarach 71 x 71 pikseli.icon_mask_base_uri
zwraca podstawowy adres URL ikony bez koloru bez rozszerzenia .svg lub .png.icon_background_color
zwraca domyślny szesnastkowy kod koloru kategorii miejsca.name
: nazwa miejsca.- Plik
opening_hours
może zawierać te informacje:open_now
to wartość logiczna wskazująca, czy miejsce jest otwarte w bieżącej chwili (wycofano z Biblioteki miejsc, Maps JavaScript API; zamiast tego użyj parametruutc_offset_minutes
).
place_id
to identyfikator tekstowy, który jednoznacznie identyfikuje miejsce. Aby pobrać informacje o miejscu, przekaż ten identyfikator w żądaniu szczegółów miejsca. Dowiedz się więcej o tym, jak określić odwołanie do miejsca za pomocą identyfikatora miejsca.rating
zawiera ocenę miejsca w skali od 0,0 do 5,0, ustaloną na podstawie zagregowanych opinii użytkowników.types
Tablica typów dla tego miejsca (np.["political", "locality"]
lub["restaurant", "lodging"]
). Ta tablica może zawierać wiele wartości lub być pusta. Nowe wartości mogą zostać wprowadzone bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.vicinity
: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i rejon, ale nie województwo, kod pocztowy ani kraj. Na przykład biuro Google w Sydney w Australii ma wartośćvicinity
o wartości5/48 Pirrama Road, Pyrmont
.
Dostęp do wyników dodatkowych
Domyślnie każde wyszukiwanie miejsc zwraca maksymalnie 20 wyników na zapytanie. Każde wyszukiwanie może jednak zwrócić nawet 60 wyników podzielonych na 3 strony.
Dodatkowe strony są dostępne za pomocą obiektu PlaceSearchPagination
. Aby uzyskać dostęp do dodatkowych stron, musisz przechwycić obiekt PlaceSearchPagination
za pomocą funkcji wywołania zwrotnego. Obiekt PlaceSearchPagination
jest zdefiniowany jako:
hasNextPage
właściwość logicznej, która wskazuje, czy są dostępne dalsze wyniki.true
, gdy pojawi się dodatkowa strona wyników.nextPage()
– funkcja, która zwróci następny zestaw wyników. Po wykonaniu wyszukiwania musisz odczekać 2 sekundy, zanim pojawi się następna strona wyników.
Aby zobaczyć następny zestaw wyników, wywołaj funkcję nextPage
.
Każda strona wyników musi zostać wyświetlona przed wyświetleniem kolejnej strony wyników. Pamiętaj, że każde wyszukiwanie jest liczone jako 1 żądanie w ramach limitów wykorzystania.
Przykład poniżej pokazuje, jak zmienić funkcję wywołania zwrotnego w taki sposób, aby przechwycić obiekt PlaceSearchPagination
i umożliwić wysyłanie wielu żądań wyszukiwania.
TypeScript
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap(): void { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", } as google.maps.MapOptions ); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage: () => void | false; const moreButton = document.getElementById("more") as HTMLButtonElement; moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, ( results: google.maps.places.PlaceResult[] | null, status: google.maps.places.PlacesServiceStatus, pagination: google.maps.places.PlaceSearchPagination | null ) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } } ); } function addPlaces( places: google.maps.places.PlaceResult[], map: google.maps.Map ) { const placesList = document.getElementById("places") as HTMLElement; for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon!, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name!, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name!; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry!.location!); }); } } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap() { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map(document.getElementById("map"), { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", }); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage; const moreButton = document.getElementById("more"); moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, (results, status, pagination) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } }, ); } function addPlaces(places, map) { const placesList = document.getElementById("places"); for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry.location); }); } } } window.initMap = initMap;
Wypróbuj fragment
Szczegóły miejsc
Oprócz udostępnienia listy miejsc na danym obszarze usługa Miejsca może też zwracać szczegółowe informacje o konkretnym miejscu. Gdy miejsce zostanie zwrócone w odpowiedzi na wyszukiwanie miejsca, można użyć jego identyfikatora miejsca, aby przesłać prośbę o dodatkowe informacje na jego temat, np. pełny adres, numer telefonu, ocenę i opinie użytkowników itp.
Prośby o szczegóły dotyczące miejsca
Żądanie informacji o miejscu jest uzyskiwane za pomocą wywołania metody getDetails()
usługi.
service = new google.maps.places.PlacesService(map); service.getDetails(request, callback);
Ta metoda pobiera żądanie zawierające parametr placeId
odpowiedniego miejsca i pola wskazujące, które typy danych o miejscach mają zostać zwrócone. Dowiedz się więcej o tym, jak określić odwołanie do miejsca za pomocą identyfikatora miejsca.
Korzysta też z metody wywołania zwrotnego, która musi obsługiwać kod stanu przekazany w odpowiedzi google.maps.places.PlacesServiceStatus
, a także obiekt google.maps.places.PlaceResult
.
var request = { placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4', fields: ['name', 'rating', 'formatted_phone_number', 'geometry'] }; service = new google.maps.places.PlacesService(map); service.getDetails(request, callback); function callback(place, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { createMarker(place); } }
Pola (szczegóły miejsca)
Parametrfields
pobiera tablicę ciągów znaków (nazw pól).
Parametr fields
służy do określania tablicy typów danych dotyczących miejsc do zwrócenia.
Na przykład: fields: ['address_components', 'opening_hours', 'geometry']
.
Przy określaniu wartości złożonych użyj kropki. Na przykład: opening_hours.weekday_text
.
Pola odpowiadają wynikom dotyczącym szczegółów miejsca i są podzielone na 3 kategorie rozliczeń: Podstawowa, Kontakt oraz Atmosfera. Pola podstawowe są rozliczane według stawki podstawowej i nie powodują dodatkowych opłat. Pola Kontakt i Atmosfera są rozliczane według wyższej stawki. Więcej informacji znajdziesz w cenniku. Atrybucje (html_attributions
) są zawsze zwracane przy każdym wywołaniu, niezależnie od tego, czy żądanie zostało wysłane.
Podstawowe
Kategoria Podstawowa zawiera te pola:
address_components
, adr_address
, business_status
,
formatted_address
, geometry
, icon
,
icon_mask_base_uri
, icon_background_color
,name
,
permanently_closed
(wycofane),
photo
, place_id
, plus_code
, type
,
url
, utc_offset
wycofane/wycofane z języka JavaScript,
wycofano obsługę JavaScriptuutc_offset_minutes
vicinity
Nawiązanie kontaktu,
Kategoria kontaktu zawiera te pola:
formatted_phone_number
, international_phone_number
,
opening_hours
, website
Atmosfera
Kategoria atmosfery zawiera te pola:
price_level
, rating
, reviews
,
user_ratings_total
Dowiedz się więcej o polach miejsc. Więcej informacji o naliczaniu opłat za żądania dotyczące danych miejsc znajdziesz w artykule Korzystanie i płatności.
Odpowiedzi na temat szczegółów miejsca
Kody stanu
Obiekt odpowiedzi PlacesServiceStatus
zawiera informacje o stanie żądania i może zawierać informacje na potrzeby debugowania, które pomogą Ci ustalić, dlaczego nie udało się przesłać informacji o miejscu. Możliwe wartości stanu:
INVALID_REQUEST
: to żądanie było nieprawidłowe.OK
: odpowiedź zawiera prawidłowy wynik.OVER_QUERY_LIMIT
: strona przekroczyła limit żądań.NOT_FOUND
Wskazanej lokalizacji nie znaleziono w bazie danych Miejsc.REQUEST_DENIED
: strona nie może korzystać z usługi PlacesService.UNKNOWN_ERROR
: nie udało się przetworzyć żądania PlacesService z powodu błędu serwera. Jeśli spróbujesz ponownie, prośba może zostać zrealizowana.ZERO_RESULTS
: nie znaleziono żadnego wyniku dla tego żądania.
Wyniki szczegółowych informacji o miejscu
Udane wywołanie getDetails()
zwraca obiekt
PlaceResult
z tymi właściwościami:
address_components
: tablica zawierająca osobne komponenty mające zastosowanie do tego adresu.Każdy komponent adresu zwykle zawiera te pola:
types[]
to tablica wskazująca typ komponentu adresu. Zobacz listę obsługiwanych typów.long_name
to pełny opis lub nazwa składnika adresu zwracanego przez geokodera.short_name
to skrócona nazwa tekstowa komponentu adresu, jeśli jest dostępna. Na przykład składnik adresu dla stanu Alaska może mieć atrybutlong_name
o nazwie „Alaska” oraz wartośćshort_name
w polu „AK” z dwuliterowym skrótem pocztowym.
Zwróć uwagę na te informacje na temat tablicy
address_components[]
:- Tablica komponentów adresu może zawierać więcej komponentów niż
formatted_address
. - Tablica nie musi zawierać wszystkich podmiotów politycznych z adresem (oprócz tych uwzględnionych w elemencie
formatted_address
). Aby pobrać wszystkie jednostki polityczne, które mają określony adres, użyj odwrotnego geokodowania, podając szerokość i długość geograficzną adresu jako parametr w żądaniu. - Nie możemy zagwarantować, że format odpowiedzi będzie taki sam między żądaniami. Liczba
address_components
różni się w zależności od żądanego adresu i może się z czasem zmieniać dla tego samego adresu. Komponent może zmieniać pozycję w tablicy. Typ komponentu może się zmieniać. Konkretnego komponentu może brakować w późniejszej odpowiedzi.
business_status
wskazuje stan operacyjny miejsca, jeśli jest to firma. Może zawierać jedną z tych wartości:OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
nie jest zwracana.formatted_address
: czytelny dla człowieka adres miejsca.Często jest to równoważny adres pocztowy. Pamiętaj, że w niektórych krajach (np. w Wielkiej Brytanii) nie można rozpowszechniać prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.
Sformatowany adres logicznie składa się z co najmniej jednego komponentu adresu. Na przykład adres „111 8th Aleja, Nowy Jork, Nowy Jork” składa się z tych komponentów: „111” (numer domu), „8 Aleja” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu automatycznie. Zamiast tego należy używać poszczególnych komponentów adresu, które oprócz sformatowanego pola adresu zawierają odpowiedź interfejsu API.
formatted_phone_number
: numer telefonu miejsca sformatowany zgodnie z lokalną konwencją numerów.geometry
: informacje związane z geometrią miejsca. Obejmuje to m.in.:location
podaje szerokość i długość geograficzną miejsca.viewport
określa preferowany widoczny obszar na mapie podczas wyświetlania tego miejsca.
permanently_closed
(wycofano) to flaga wartości logicznej, która wskazuje, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartośćtrue
). Nie używaj właściwościpermanently_closed
. Zamiast tego użyj narzędziabusiness_status
, aby sprawdzić stan operacyjny firmy.plus_code
(zobacz Otwórz kod lokalizacji i kody plus) to zakodowane odniesienie do lokalizacji utworzone na podstawie współrzędnych geograficznych, które reprezentuje obszar: 1/8000 stopnia (około 14 m x 14 m na równiku) lub mniejszy. Kody plus mogą zastąpić adresy ulic w miejscach, w których one nie istnieją (gdzie budynki nie są ponumerowane lub ulice nie mają nazw).Kod plus jest sformatowany jako kod globalny i kod złożony:
global_code
to czteroznakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).compound_code
to co najmniej 6-znakowy kod lokalny z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tych treści automatycznie.
html_attributions
: tekst źródła, który będzie wyświetlany w przypadku tego wyniku dotyczącego miejsca.icon
: adres URL zasobu obrazu, którego można użyć do reprezentowania typu tego miejsca.international_phone_number
zawiera numer telefonu danego miejsca w formacie międzynarodowym. Format międzynarodowy obejmuje kod kraju, który jest poprzedzony znakiem plusa (+). Na przykładinternational_phone_number
biura Google w Sydney to+61 2 9374 4000
.name
: nazwa miejsca.utc_offset
Wycofano z biblioteki Miejsc Google Maps JavaScript API. Zamiast tego użyj parametruutc_offset_minutes
.utc_offset_minutes
podaje liczbę minut, o ile bieżąca strefa czasowa tego miejsca jest przesunięta w stosunku do czasu UTC. Na przykład w przypadku miejsc w Sydney (Australia) w czasie letnim będzie to 660 (+11 godzin od czasu UTC), a w przypadku miejsc w Kalifornii poza czasem letnim – -480 (–8 godzin od czasu UTC).opening_hours
zawiera te informacje:open_now
(wycofano z biblioteki Places, Maps JavaScript API; zamiast tego użyj funkcji opening_hours.isOpen(); Obejrzyj ten film, aby dowiedzieć się, jak używać atrybutuisOpen
z informacjami o miejscu). to wartość logiczna wskazująca, czy miejsce jest otwarte w bieżącym czasie.periods[]
to tablica okresów otwarcia obejmujących 7 dni od niedzieli w kolejności chronologicznej. Każdy okres obejmuje:open
zawiera parę obiektów daty i godziny, które opisują, kiedy miejsce jest otwarte:day
liczbę z zakresu od 0 do 6 odpowiadającą dniom tygodnia, zaczynając od niedzieli. Na przykład 2 oznacza wtorek.time
może zawierać porę dnia w 24-godzinnym formacie ggmm (wartości mieszczą się w zakresie 0000–2359). Wartośćtime
będzie podawana w strefie czasowej miejsca.
close
może zawierać parę obiektów dnia i godziny opisującej, kiedy miejsce jest zamknięte. Uwaga: jeśli miejsce jest zawsze otwarte, w odpowiedzi nie będzie sekcjiclose
. Aplikacje mogą być reprezentowane jako zawsze otwarte jako okresopen
zawierającyday
o wartości 0 itime
o wartości 0000, bezclose
.
weekday_text
to tablica 7 ciągów znaków reprezentujących sformatowane godziny otwarcia w poszczególnych dniach tygodnia. Jeśli w żądaniu dotyczącym szczegółów miejsca został określony parametrlanguage
, usługa Miejsca odpowiednio sformatuje i zlokalizuje godziny otwarcia odpowiednio do tego języka. Kolejność elementów w tej tablicy zależy od parametrulanguage
. W przypadku niektórych języków tydzień zaczyna się w poniedziałek, a w innych – w niedzielę.
permanently_closed
(wycofano) to flaga wartości logicznej, która wskazuje, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartośćtrue
). Nie używaj właściwościpermanently_closed
. Zamiast tego użyj narzędziabusiness_status
, aby sprawdzić stan operacyjny firmy.photos[]
: tablica obiektówPlacePhoto
.PlacePhoto
może posłużyć do uzyskania zdjęcia za pomocą metodygetUrl()
albo możesz sprawdzić obiekt pod kątem tych wartości:height
: maksymalna wysokość obrazu w pikselach.width
: maksymalna szerokość obrazu w pikselach.html_attributions
: tekst źródła, który będzie wyświetlany z tym zdjęciem miejsca.
place_id
: identyfikator tekstowy, który jednoznacznie identyfikuje miejsce i może służyć do pobierania informacji o tym miejscu za pomocą żądania szczegółów miejsca. Dowiedz się więcej o tym, jak określić odwołanie do miejsca za pomocą identyfikatora miejsca.rating
: ocena miejsca w skali od 0,0 do 5,0, określona na podstawie zbiorczych opinii użytkowników.reviews
tablicę z maksymalnie 5 opiniami. Każda opinia składa się z kilku elementów:aspects[]
zawiera tablicę obiektówPlaceAspectRating
, z których każdy zawiera ocenę jednego atrybutu instytucji. Pierwszy obiekt w tablicy jest uważany za aspekt główny. Każdy elementPlaceAspectRating
został zdefiniowany jako:type
– nazwa ocenianego aspektu. Obsługiwane są te typy:appeal
,atmosphere
,decor
,facilities
,food
,overall
,quality
iservice
.rating
ocenę użytkownika za ten konkretny aspekt (od 0 do 3).
author_name
nazwa użytkownika, który przesłał opinię. Opinie anonimowe są przypisywane do „Użytkownika Google”. Jeśli ustawiono parametr language, wyrażenie „Użytkownik Google” zwróci zlokalizowany ciąg znaków.author_url
adres URL profilu Google+ użytkownika, jeśli jest dostępny.language
kod języka IETF wskazujący język użyty w opinii użytkownika. To pole zawiera tylko główny tag języka, a nie tag dodatkowy wskazujący kraj lub region. Na przykład wszystkie opinie w języku angielskim są oznaczone tagiem „en”, a nie „en-AU” czy „en-UK”.rating
ogólną ocenę tego miejsca podaną przez użytkownika. Jest to liczba całkowita z zakresu od 1 do 5.text
opinię użytkownika. Przy sprawdzaniu lokalizacji w Miejscach Google takie opinie są uznawane za opcjonalne, dlatego to pole może być puste.
types
Tablica typów dla tego miejsca (np.["political", "locality"]
lub["restaurant", "lodging"]
). Ta tablica może zawierać wiele wartości lub być pusta. Nowe wartości mogą zostać wprowadzone bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.url
: URL oficjalnej strony tego miejsca w Google. To jest strona należąca do Google, która zawiera najlepsze dostępne informacje o tym miejscu. Aplikacje muszą zawierać link do strony lub umieścić ją na dowolnym ekranie, który wyświetla użytkownikowi szczegółowe wyniki dotyczące danego miejsca.vicinity
: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i rejon, ale nie województwo, kod pocztowy ani kraj. Na przykład biuro Google w Sydney w Australii ma wartośćvicinity
o wartości5/48 Pirrama Road, Pyrmont
. Właściwośćvicinity
jest zwracana tylko w przypadku wyszukiwania w pobliżu.website
zawiera listę wiarygodnej witryny tego miejsca, np. strony głównej firmy.
Uwaga: wielowymiarowe oceny mogą nie być dostępne we wszystkich lokalizacjach. Jeśli opinii jest za mało, szczegóły odpowiedzi będą zawierać starszą ocenę w skali od 0,0 do 5,0 (jeśli jest dostępna) lub brak oceny.
Tworzenie odwołania do miejsca za pomocą identyfikatora miejsca
Identyfikator miejsca to niepowtarzalne odniesienie do danego miejsca w Mapach Google. Identyfikatory miejsc są dostępne dla większości lokalizacji, w tym firm, punktów orientacyjnych, parków i skrzyżowań.
Aby użyć identyfikatora miejsca w aplikacji, musisz najpierw wyszukać identyfikator, który jest dostępny w PlaceResult
w żądaniu wyszukiwania miejsca lub szczegółów.
Następnie możesz użyć tego identyfikatora miejsca, aby wyszukać PlaceDetails.
Identyfikatory miejsc są zwolnione z ograniczeń w pamięci podręcznej opisanych w artykule 3.2.3(b) Warunków korzystania z usługi Google Maps Platform. Możesz więc zapisywać wartości identyfikatorów miejsca do późniejszego wykorzystania. Sprawdzone metody przechowywania identyfikatorów miejsc znajdziesz w omówieniu identyfikatorów miejsc.
var map; function initialize() { // Create a map centered in Pyrmont, Sydney (Australia). map = new google.maps.Map(document.getElementById('map'), { center: {lat: -33.8666, lng: 151.1958}, zoom: 15 }); // Search for Google's office in Australia. var request = { location: map.getCenter(), radius: '500', query: 'Google Sydney' }; var service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } // Checks that the PlacesServiceStatus is OK, and adds a marker // using the place ID and location from the PlacesService. function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { var marker = new google.maps.Marker({ map: map, place: { placeId: results[0].place_id, location: results[0].geometry.location } }); } } google.maps.event.addDomListener(window, 'load', initialize);
Zdjęcia miejsca
Funkcja zdjęć miejsc umożliwia dodawanie do witryny wysokiej jakości zdjęć. Usługa Zdjęcia zapewnia dostęp do milionów zdjęć przechowywanych w bazie danych Miejsc i Google+ Lokalnie. Gdy uzyskasz informacje o miejscu przy użyciu żądania o szczegóły miejsca, w przypadku odpowiednich zdjęć zostaną zwrócone odniesienia do zdjęć. Żądania wyszukiwania w pobliżu i wyszukiwania tekstowego zwracają w razie potrzeby również pojedyncze odwołanie do zdjęcia dla każdego miejsca. Za pomocą usługi Zdjęcia możesz uzyskać dostęp do zdjęć, do których istnieją odwołania, i zmienić ich rozmiar na taki, który odpowiada Twojej aplikacji.
W przypadku każdego żądania getDetails()
, textSearch()
lub nearbySearch()
dotyczącego obiektu PlacesService
tablica obiektów PlacePhoto
będzie zwracana jako część obiektu PlaceResult
.
Uwaga: liczba zwróconych zdjęć różni się w zależności od prośby.
- Wyszukiwanie w pobliżu lub wyszukiwanie tekstowe zwróci maksymalnie 1 obiekt
PlacePhoto
. - Żądanie szczegółów zwróci maksymalnie 10 obiektów
PlacePhoto
.
Możesz zażądać adresu URL powiązanego obrazu, wywołując metodę PlacePhoto.getUrl()
i przekazując prawidłowy obiekt PhotoOptions
. Obiekt PhotoOptions
umożliwia określenie maksymalnej wysokości i szerokości obrazu. Jeśli podasz wartości zarówno maxHeight
, jak i maxWidth
, usługa fotograficzna zmieni rozmiar obrazu na mniejszy z dwóch rozmiarów, zachowując oryginalny współczynnik proporcji.
Poniższy fragment kodu akceptuje obiekt miejsca i dodaje znacznik do mapy, jeśli takie zdjęcie istnieje. Domyślny obraz znacznika zostanie zastąpiony małą wersją zdjęcia.
function createPhotoMarker(place) { var photos = place.photos; if (!photos) { return; } var marker = new google.maps.Marker({ map: map, position: place.geometry.location, title: place.name, icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35}) }); }
Zdjęcia zwracane przez usługę Zdjęcia pochodzą z różnych lokalizacji, m.in. od właścicieli firm i zdjęć przesłanych przez użytkowników. W większości przypadków można użyć tych zdjęć bez informacji o ich źródle lub dodać do nich wymagane informacje o autorze. Jeśli jednak zwrócony element photo
zawiera wartość w polu html_attributions
, musisz podać dodatkową informację w swojej aplikacji przy każdym wyświetleniu obrazu.