Opis
Funkcje w bibliotece miejsc oraz interfejs Maps JavaScript API umożliwiają aplikacji wyszukiwanie miejsc (zdefiniowanych w tym interfejsie API jako obiekty, lokalizacje geograficzne lub ważne ciekawe miejsca) znajdujących się na zdefiniowanym obszarze, np. na granicach mapy lub wokół stałego punktu.
Interfejs Miejsca API udostępnia funkcję autouzupełniania, dzięki której aplikacje mogą wyszukiwać z wyprzedzeniem w polu wyszukiwania w Mapach 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, aby przed rozpoczęciem pracy zapoznać się z kodem JavaScript i uzyskać klucz interfejsu API.
Włącz interfejsy API
Zanim użyjesz biblioteki Miejsc w interfejsie Maps JavaScript API, upewnij się, że interfejs Miejsca API jest włączony w konsoli Google Cloud w tym samym projekcie, który został skonfigurowany w przypadku interfejsu Maps JavaScript API.
Aby wyświetlić listę włączonych interfejsów API:
- Otwórz Google Cloud Console.
- Kliknij przycisk Wybierz projekt, a następnie wybierz ten sam projekt, który został 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:
- Aby wyświetlić kartę Biblioteka, u góry strony wybierz WŁĄCZ INTERFEJSY API I USŁUGI. Możesz też wybrać w menu po lewej stronie opcję Biblioteka.
- Wyszukaj Places API, a następnie wybierz go z listy wyników.
- Kliknij 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ą, oddzielną od głównego kodu interfejsu Maps JavaScript API. Aby korzystać z funkcji zawartych 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 omówieniu bibliotek.
Dodanie interfejsu Places API do listy ograniczeń interfejsu API klucza interfejsu API
Zastosowanie ograniczeń interfejsów API do kluczy ogranicza możliwość używania klucza interfejsu API do co najmniej jednego interfejsu API lub pakietu SDK. Żądania do interfejsu API lub pakietu SDK powiązane z kluczem interfejsu API będą przetwarzane. Żądania do interfejsu API lub pakietu SDK niepowiązane z kluczem interfejsu 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 wybierz Mapy Google 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 wykorzystania
Limity
Biblioteka Miejsc współdzieli limit wykorzystania z interfejsem Miejsca 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
Za pomocą usługi Miejsca można przeprowadzać następujące rodzaje wyszukiwań:
- Funkcja Znajdź miejsce z zapytania zwraca miejsce na podstawie zapytania tekstowego (na przykład nazwę lub adres miejsca).
- Funkcja 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ć lokale, takie jak restauracje, sklepy i biura, a także wyniki geokodu, które określają adresy, obszary polityczne (np. miejscowości i miasta) oraz inne ciekawe miejsca.
Znajdowanie próśb o miejsce
Żądanie Znajdź miejsce umożliwia wyszukiwanie miejsca przy użyciu zapytania tekstowego lub numeru telefonu. Istnieją 2 typy żądań „Znajdź miejsce”:
Znajdź miejsce na podstawie zapytania
Polecenie Znajdź na podstawie zapytania pobiera tekst i zwraca miejsce. Dane wejściowe mogą być dowolnymi danymi miejsc, np. nazwą lub adresem firmy. Aby utworzyć żądanie Znajdź miejsce z żądania, wywołaj metodę PlacesService
findPlaceFromQuery()
, która przyjmuje te parametry:
query
(wymagany) – ciąg tekstowy, który należy wyszukać, np. „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria instytucji. Inne rodzaje danych wejściowych mogą powodować błędy i nie gwarantują, że będą zwracać prawidłowe wyniki. Interfejs Places API będzie zwracać wyniki wyszukiwania na podstawie tego ciągu znaków i uporządkować wyniki według ich postrzeganej trafności.fields
(wymagany) Co najmniej jedno pole określające typy danych miejsc do zwrócenia.locationBias
(opcjonalny) – współrzędne definiują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 pokazuje wywołanie findPlaceFromQuery()
, wyszukując „Muzeum Sztuki Współczesnej Australia” z 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ź na podstawie numeru telefonu pobiera numer telefonu i zwraca miejsce. Aby utworzyć żądanie Znajdź miejsce na podstawie numeru telefonu, wywołaj metodę findPlaceFromPhoneNumber()
klasy PlacesService
, która przyjmuje te parametry:
phoneNumber
(wymagany) Numer telefonu w formacie E.164.fields
(wymagany) Co najmniej jedno pole określające typy danych miejsc do zwrócenia.locationBias
(opcjonalny) – 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 (4 punkty szerokości i długości albo 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 (metody znajdowania miejsc)
Użyj parametru fields
, aby określić tablicę typów danych miejsca 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 trzy kategorie rozliczeniowe: Podstawowa, Kontakt oraz Atmosfera. Płatności za pola podstawowe są naliczane według stawki podstawowej i nie powodują naliczenia dodatkowych opłat. Za pola kontaktu i atmosfery naliczana jest wyższa stawka. Więcej informacji znajdziesz w arkuszu opłat. Atrybucje (html_attributions
) są zawsze zwracane przy każdym wywołaniu, niezależnie od tego, czy pole zostało żądane.
Podstawowy
Zawiera ona 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 informacje o miejscu, aby uzyskać wyniki
opening_hours
).
Atmosfera
Kategoria Atmosfera 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.
Ustaw odchylenie lokalizacji (metody znajdowania miejsc)
Użyj parametru locationBias
, aby uzyskać wyniki dla określonego obszaru w polu Znajdź miejsce. locationBias
możesz ustawić na te sposoby:
Stronniczość wyników 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ć atrybutu LatLngBounds.
Zdefiniuj promień wyszukiwania (w metrach) wyśrodkowany na konkretnym obszarze:
locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}
Zapytania o wyszukiwanie w pobliżu
Wyszukiwanie w pobliżu pozwala wyszukiwać miejsca 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 jeden z dwóch sposobów:
-
LatLngBounds
. - obszar kołowy zdefiniowany jako kombinacja właściwości
location
– wskazując środek koła jako obiektLatLng
– i promień mierzony w metrach.
Wyszukiwanie miejsc w pobliżu jest inicjowane przez wywołanie metody nearbySearch()
obiektu
PlacesService
, które zwraca tablicę obiektów
PlaceResult
. Metoda nearbySearch()
zastępuje metodę search()
od wersji 3.9.
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
; pierwszy obiekt pobiera obiektgoogle.maps.LatLng
, a drugi – prostą liczbę całkowitą określającą promień koła 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ćradius
anibounds
.
keyword
(opcjonalny) – hasło, które ma zostać dopasowane do wszystkich dostępnych pól, w tym między innymi do nazwy, typu i adresu, a także opinii klientów i innych treści firm zewnętrznych.minPriceLevel
imaxPriceLevel
(opcjonalne) – ogranicza wyniki tylko do miejsc w określonym zakresie. Prawidłowe wartości mieszczą się w zakresie od 0 (najwyższa cena) do 4 (najdroższa) włącznie.name
Wycofane. 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. Miejsca, które nie mają określonych godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane, jeśli uwzględnisz ten parametr w swoim zapytaniu. Ustawienie dlaopenNow
nafalse
nie ma żadnego efektu.rankBy
(opcjonalny) – określa kolejność wyświetlania wyników. 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 względem podobnych miejsc, które są mniej widoczne. Na widoczność może mieć wpływ pozycja miejsca w indeksie Google, popularność globalna i inne czynniki. Jeśli jest określonygoogle.maps.places.RankBy.PROMINENCE
, wymagany jest parametrradius
.google.maps.places.RankBy.DISTANCE
. Ta opcja powoduje sortowanie wyników w kolejności rosnącej według odległości od podanej wartościlocation
(wymagane). Pamiętaj, że nie możesz określić niestandardowych właściwościbounds
aniradius
, jeśli podaszRankBy.DISTANCE
. Jeśli podasz właściwośćRankBy.DISTANCE
, wymagany jest co najmniej 1 z właściwościkeyword
,name
lubtype
.
type
– ogranicza wyniki do miejsc pasujących do określonego typu. Możesz 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 tekstu
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 z butami w pobliżu Krakowa”. W odpowiedzi usługa przesyła listę miejsc pasujących do ciągu tekstowego i ustawione promowanie 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 jest inicjowane przez wywołanie 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 tekstowy, który chcesz wyszukać, np. „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria instytucji. Inne typy danych wejściowych mogą powodować błędy i nie gwarantują, że będą zwracać prawidłowe wyniki. Usługa Miejsca będzie zwracać wyniki wyszukiwania na podstawie tego ciągu znaków i uporządkować wyniki według 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 są otwarte w momencie wysyłania zapytania. Miejsca, które nie mają określonych godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane, jeśli uwzględnisz ten parametr w swoim zapytaniu. Ustawienie dlaopenNow
nafalse
nie ma żadnego efektu.minPriceLevel
imaxPriceLevel
– ogranicza wyniki tylko do tych miejsc na określonym poziomie ceny. Prawidłowe wartości mieszczą się w zakresie od 0 (najbardziej przystępny cenowo) do 4 (najdroższy) włącznie.- Jeden z tych warunków:
bounds
– obiektgoogle.maps.LatLngBounds
definiujący prostokąt, w którym ma zostać przeprowadzone wyszukiwanie, lub- a
location
iradius
– możesz ukierunkować wyniki do określonego kręgu, przekazując parametrlocation
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 promień to prosta liczba całkowita, która przedstawia promień koła w metrach. Maksymalny dozwolony promień to 50 000 metrów.
type
– ogranicza wyniki do miejsc pasujących do określonego typu. Możesz 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 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 informacje o stanie żądania i może zawierać informacje na potrzeby debugowania, które pomagają znaleźć przyczynę niepowodzenia żądania. 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 MiejscaService.UNKNOWN_ERROR
: nie udało się przetworzyć żądania MiejscService z powodu błędu serwera. Jeśli spróbujesz ponownie, prośba może zostać zrealizowana.ZERO_RESULTS
: nie znaleziono wyników 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:
- Jeśli chodzi o firmę, to pole
business_status
wskazuje stan operacyjny danego miejsca. 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 zrozumiały dla człowieka adres tego miejsca. Właściwośćformatted_address
jest zwracana tylko w przypadku wyszukiwania tekstowego.Często jest to 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 jednego lub większej liczby komponentów adresu. Na przykład adres „111 8th Avenue, Nowy Jork, NY” składa się z tych komponentów: „111” (numer domu), „8th Avenue” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych komponentów adresu, które odpowiedź interfejsu API zawiera oprócz sformatowanego pola adresu.
geometry
: informacje związane z geometrią miejsca. Obejmuje to: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
(patrz sekcja Otwórz kod lokalizacji i kody plus) to zakodowane odniesienie do lokalizacji wymierzone na podstawie szerokości i długości geograficznej, które reprezentuje obszar: 1/8000 stopnia na 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 nie ma ich (gdzie budynki nie są numerowane lub ulice nie mają nazw).Kod plus jest sformatowany jako kod globalny i kod złożony:
global_code
to 4-znakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).compound_code
to co najmniej 6-znakowy kod lokalny z konkretną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tej treści automatycznie.
html_attributions
: tablica atrybucji, którą musisz wyświetlać przy wyświetlaniu wyników wyszukiwania. Każda pozycja w tablicy zawiera tekst HTML pojedynczego źródła danych. Uwaga: w tym przypadku widoczne są wszystkie informacje o atrybucji dotyczące całej odpowiedzi na wyszukiwanie. Dlatego wszystkie obiektyPlaceResult
w odpowiedzi zawierają identyczne listy atrybucji.icon
zwraca adres URL ikony w formacie PNG o wymiarach 71 x 71 pikseli.icon_mask_base_uri
zwraca podstawowy adres URL ikony, która nie jest kolorowa, pomniejszony o rozszerzenie .svg lub .png.icon_background_color
zwraca domyślny szesnastkowy kod koloru kategorii miejsca.name
: nazwa miejsca.opening_hours
może zawierać te informacje:open_now
to wartość logiczna wskazująca, czy miejsce jest otwarte w bieżącej godzinie (wycofane w bibliotece Miejsc, Maps JavaScript API; zamiast tego użyjutc_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 od 0, 0 do 5, 0 opracowaną 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. Możemy wprowadzać nowe wartości bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.vicinity
: uproszczony adres miejsca, obejmujący nazwę ulicy, numer ulicy i lokalizację, z wyjątkiem prowincji/stanu, kodu pocztowego ani kraju. Na przykład w siedzibie Google w Sydney w Australii wartośćvicinity
ma wartość5/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 pośrednictwem 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ść logiczna, która wskazuje, czy są dostępne dalsze wyniki.true
, gdy wyświetla 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, zadzwoń pod numer nextPage
.
Każda strona wyników musi zostać wyświetlona przed wyświetleniem następnej strony wyników. Pamiętaj, że każde wyszukiwanie jest liczone jako jedno żądanie w ramach limitów wykorzystania.
Poniższy przykład pokazuje, jak zmienić funkcję wywołania zwrotnego, 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 miejsc, można użyć identyfikatora miejsca, aby przesłać dodatkowe informacje o nim, takie jak pełny adres, numer telefonu, oceny użytkowników i opinie itp.
Prośby o informacje o miejscu
Żą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
wybranego miejsca oraz pola wskazujące, jakie 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.
Wymaga też 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
przyjmuje tablicę ciągów znaków (nazw pól).
Użyj parametru fields
, aby określić tablicę typów danych miejsca 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 i Atmosfera. Pola podstawowe są rozliczane według stawki podstawowej i nie powodują naliczenia dodatkowych opłat. Pola kontaktu i atmosfery są rozliczane według wyższej stawki. Więcej informacji znajdziesz w arkuszu opłat. Atrybucje (html_attributions
) są zawsze zwracane przy każdym wywołaniu, niezależnie od tego, czy zostało ono przesłane.
Podstawowy
Zawiera ona 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
w bibliotece, wycofano} interfejs API / kod JavaScriptutc_offset_minutes
vicinity
Nawiązanie kontaktu,
Kategoria Kontakt zawiera te pola:
formatted_phone_number
, international_phone_number
,
opening_hours
, website
Atmosfera
Kategoria Atmosfera 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 danych miejsc znajdziesz w artykule Korzystanie i rozliczenia.
Odpowiedzi dotyczące szczegółów miejsca
Kody stanu
Obiekt odpowiedzi PlacesServiceStatus
zawiera informacje o stanie żądania i może zawierać informacje na potrzeby debugowania, które pomagają znaleźć przyczynę niepowodzenia żądania szczegółów 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ń.NOT_FOUND
Wskazanej lokalizacji nie znaleziono w bazie danych Miejsc.REQUEST_DENIED
: strona nie może korzystać z usługi MiejscaService.UNKNOWN_ERROR
: nie udało się przetworzyć żądania MiejscService z powodu błędu serwera. Jeśli spróbujesz ponownie, prośba może zostać zrealizowana.ZERO_RESULTS
: nie znaleziono wyników dla tego żądania.
Szczegółowe informacje o miejscu
Udane wywołanie getDetails()
zwraca obiekt
PlaceResult
z tymi właściwościami:
address_components
: tablica zawierająca oddzielne komponenty mające zastosowanie do tego adresu.Każdy komponent adresu zwykle zawiera te pola:
types[]
to tablica wskazująca typ składnika adresu. Zobacz listę obsługiwanych typów.long_name
to pełny opis tekstowy lub nazwa składnika adresu zwracanego przez geokoder.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ć w polulong_name
nazwę „Alaska” i zasadęshort_name
„AK” z dwuliterowym skrótem pocztowym.
Zwróć uwagę na te informacje o 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 (z wyjątkiem tych uwzględnionych w elemencie
formatted_address
). Aby pobrać wszystkie jednostki polityczne, które zawierają określony adres, użyj odwrotnego geokodowania, przekazując w żądaniu szerokość i długość geograficzną adresu jako parametr. - Nie gwarantujemy, że format odpowiedzi będzie taki sam w różnych żądaniach. Liczba
address_components
różni się w zależności od żądanego adresu i może się zmieniać w przypadku tego samego adresu. Komponent może zmieniać pozycję w tablicy. Typ komponentu może się zmieniać. W późniejszej odpowiedzi może brakować konkretnego komponentu.
- Jeśli chodzi o firmę, to pole
business_status
wskazuje stan operacyjny danego miejsca. 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 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 jednego lub większej liczby komponentów adresu. Na przykład adres „111 8th Avenue, Nowy Jork, NY” składa się z tych komponentów: „111” (numer domu), „8th Avenue” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych komponentów adresu, które odpowiedź interfejsu API zawiera oprócz sformatowanego pola adresu.
formatted_phone_number
: numer telefonu miejsca sformatowany zgodnie z konwencją regionalną.geometry
: informacje związane z geometrią miejsca. Obejmuje to: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
(patrz sekcja Otwórz kod lokalizacji i kody plus) to zakodowane odniesienie do lokalizacji wymierzone na podstawie szerokości i długości geograficznej, które reprezentuje obszar: 1/8000 stopnia na 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 nie ma ich (gdzie budynki nie są numerowane lub ulice nie mają nazw).Kod plus jest sformatowany jako kod globalny i kod złożony:
global_code
to 4-znakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).compound_code
to co najmniej 6-znakowy kod lokalny z konkretną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tej treści automatycznie.
html_attributions
: tekst źródła do wyświetlenia w przypadku tego miejsca.icon
: URL zasobu graficznego, którego można użyć do reprezentowania typu tego miejsca.international_phone_number
zawiera numer telefonu tego miejsca w formacie międzynarodowym. Format międzynarodowy obejmuje kod kraju i jest poprzedzony znakiem plusa (+). Na przykładinternational_phone_number
dla biura Google w Sydney w Australii to+61 2 9374 4000
.name
: nazwa miejsca.utc_offset
Wycofane z biblioteki Miejsc (Map Google) w interfejsie API JavaScript. Użyj zamiast niego parametruutc_offset_minutes
.utc_offset_minutes
zawiera liczbę minut, o ile obecna strefa czasowa tego miejsca jest przesunięta względem czasu UTC. Na przykład w przypadku miejsc w Sydney w Australii w okresie letnim będzie to 660 (+11 godzin od UTC), a w przypadku miejsc w Kalifornii poza czasem letnim – -480 (–8 godzin w przypadku czasu UTC).- Pole
opening_hours
zawiera te informacje:open_now
(wycofano z biblioteki miejsc oraz z interfejsu Maps JavaScript API; zamiast niego użyj opening_hours.isOpen(); Obejrzyj ten film, aby dowiedzieć się, jak używać właściwościisOpen
z informacjami o miejscu). to wartość logiczna wskazująca, czy miejsce jest otwarte o danej porze.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 dnia i godziny opisujących otwarcie danego miejsca:day
liczbę 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).time
będzie raportowany w strefie czasowej miejsca.
close
może zawierać parę obiektów daty i godziny opisujące, kiedy miejsce jest zamknięte. Uwaga: jeśli miejsce jest zawsze otwarte, w odpowiedzi nie będzie sekcjiclose
. Aplikacje mogą mieć pewność, że funkcja „zawsze otwarta” jest reprezentowana jako okresopen
zawierającyday
o wartości 0,time
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 określono parametrlanguage
, usługa Miejsca odpowiednio sformatuje i zlokalizuje godziny otwarcia pod kątem danego języka. Kolejność elementów w tej tablicy zależy od parametrulanguage
. W przypadku niektórych języków tydzień rozpoczyna się w poniedziałek, a dla 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()
lub 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, który będzie wyświetlany ze zdjęciem tego miejsca.
place_id
: identyfikator tekstowy, który jednoznacznie identyfikuje miejsce i może służyć do pobierania informacji o nim 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 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 komponentów:aspects[]
zawiera tablicę z obiektamiPlaceAspectRating
, z których każdy określa ocenę 1 atrybutu obiektu. Pierwszy obiekt w tablicy jest uważany za aspekt podstawowy. Każdy elementPlaceAspectRating
jest zdefiniowany jako:type
nazwa ocenianego aspektu. Obsługiwane są te typy:appeal
,atmosphere
,decor
,facilities
,food
,overall
,quality
iservice
.rating
ocenę tego konkretnego aspektu przyznaną przez użytkownika w skali od 0 do 3.
author_name
– nazwa użytkownika, który przesłał opinię. Anonimowe opinie są przypisywane do „Użytkownika Google”. Jeśli został ustawiony parametr języka, 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ę użytkownika dotyczącą tego miejsca. Jest to liczba całkowita z zakresu od 1 do 5.text
opinię użytkownika. Podczas sprawdzania lokalizacji w Miejscach Google opinie tekstowe 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. Możemy wprowadzać nowe wartości bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.url
: URL oficjalnej strony w Google tego miejsca. 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 ze szczegółowymi wynikami dotyczącymi danego miejsca.vicinity
: uproszczony adres miejsca, obejmujący nazwę ulicy, numer ulicy i lokalizację, z wyjątkiem prowincji/stanu, kodu pocztowego ani kraju. Na przykład w siedzibie Google w Sydney w Australii wartośćvicinity
ma wartość5/48 Pirrama Road, Pyrmont
. Właściwośćvicinity
jest zwracana tylko w przypadku wyszukiwania w pobliżu.website
zawiera listę wiarygodnych stron internetowych dotyczących tego miejsca, np. strony głównej firmy.
Uwaga: wielowymiarowe oceny mogą nie być dostępne we wszystkich lokalizacjach. Jeśli jest zbyt mało opinii, w odpowiedzi ze szczegółami znajdziesz 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. Dostępne są identyfikatory miejsc dla większości lokalizacji, w tym firm, punktów orientacyjnych, parków i skrzyżowań.
Aby użyć identyfikatora miejsca w swojej aplikacji, musisz najpierw wyszukać identyfikator, który jest dostępny w PlaceResult
w żądaniu wyszukiwania miejsc lub szczegółów.
Następnie możesz użyć tego identyfikatora miejsca do wyszukania szczegółów miejsca.
Identyfikatory miejsc są zwolnione z ograniczeń buforowania opisanych w artykule 3.2.3(b) Warunków korzystania z usługi Google Maps Platform. Dzięki temu możesz zapisywać wartości identyfikatorów miejsca do późniejszego użycia. 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ęcia miejsca umożliwia dodanie 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 za pomocą żądania informacji o miejscu, dla odpowiednich zdjęć zostaną zwrócone odniesienia do zdjęć. Żądania wyszukiwania w pobliżu i wyszukiwania tekstowego zwracają w razie potrzeby także 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 najlepiej pasuje do Twojej aplikacji.
Tablica obiektów PlacePhoto
będzie zwracana w ramach obiektu PlaceResult
w przypadku każdego żądania getDetails()
, textSearch()
lub nearbySearch()
skierowanego do PlacesService
.
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 Details zwróci maksymalnie 10 obiektów
PlacePhoto
.
Możesz poprosić o adres URL powiązanego obrazu, wywołując metodę PlacePhoto.getUrl()
i przekazując prawidłowy obiekt PhotoOptions
. Obiekt PhotoOptions
pozwala określić maksymalną wysokość i szerokość obrazu. Jeśli podasz zarówno wartość maxHeight
, jak i maxWidth
, usługa fotograficzna zmieni rozmiar obrazu na mniejszy z tych dwóch rozmiarów, zachowując pierwotny współczynnik proporcji.
Ten fragment kodu akceptuje obiekt miejsca i dodaje znacznik do mapy, jeśli takie zdjęcie istnieje. Domyślny znacznik 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 użytkowników. W większości przypadków można użyć tych zdjęć bez podania źródła lub dodać do nich wymagane informacje o ich źródle. Jeśli jednak zwrócony element photo
zawiera wartość w polu html_attributions
, musisz uwzględnić dodatkową informację w aplikacji wszędzie tam, gdzie wyświetlasz obraz.