Omówienie
Funkcje w bibliotece miejsc interfejsu Maps JavaScript API umożliwiają aplikacji wyszukiwanie miejsc (zdefiniowanych w tym interfejsie API jako obiekty, lokalizacje geograficzne lub znane punkty zainteresowania) znajdujących się w określonym obszarze, np. w granicach mapy lub wokół stałego punktu.
Interfejs Places API udostępnia funkcję autouzupełniania, która umożliwia aplikacjom wyświetlanie wyników wyszukiwania typu „type ahead” w polu wyszukiwania Map Google. Gdy użytkownik zacznie wpisywać adres, automatyczne uzupełnianie wypełni resztę. Więcej informacji znajdziesz w dokumentacji autouzupełniania.
Pierwsze kroki
Jeśli nie znasz interfejsu Maps JavaScript API ani języka JavaScript, przed rozpoczęciem pracy zapoznaj się z JavaScriptem i uzyskaj klucz API.
Włącz interfejsy API
Zanim użyjesz biblioteki Miejsca w interfejsie Maps JavaScript API, upewnij się, że interfejs Places API jest włączony w konsoli Google Cloud w tym samym projekcie, w którym skonfigurowano interfejs Maps JavaScript API.
Aby wyświetlić listę włączonych interfejsów API:
- Otwórz konsolę Google Cloud.
- Kliknij przycisk Wybierz projekt, a potem wybierz ten sam projekt skonfigurowany dla interfejsu Maps JavaScript API i kliknij Otwórz.
- Na liście interfejsów API w panelu odszukaj interfejs Places API.
- Jeśli na liście widzisz interfejs Places API, jest on już włączony. Jeśli interfejs API nie jest wymieniony, włącz go:
- U góry strony kliknij WŁĄCZ INTERFEJSY API I USŁUGI, aby wyświetlić kartę Biblioteka. Możesz też w menu po lewej stronie wybrać Biblioteka.
- Wyszukaj Places API, a następnie wybierz go z listy wyników.
- Wybierz WŁĄCZ. Po zakończeniu procesu interfejs Places API pojawi się na liście interfejsów API w panelu.
Ładowanie biblioteki
Usługa Miejsca to samodzielna biblioteka, oddzielona od głównego kodu Maps JavaScript API. Aby korzystać z funkcji zawartych w tej bibliotece, musisz najpierw ją załadować, używając parametru libraries
w adresie URL inicjalizacji interfejsu Maps API:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>
Więcej informacji znajdziesz w artykule Omówienie bibliotek.
Dodaj interfejs Places API do listy ograniczeń interfejsu API klucza API
Zastosowanie ograniczeń interfejsu API do kluczy ogranicza możliwość wykorzystywania klucza interfejsu API do jednego bądź kilku interfejsów API lub pakietów SDK. Przetwarzane są tylko żądania do interfejsu API lub pakietu SDK powiązane z kluczem API. Żądania do interfejsu API lub pakietu SDK niepowiązane z kluczem kończą się niepowodzeniem. Aby ograniczyć klucz interfejsu API do korzystania z biblioteki miejsc i interfejsu Maps JavaScript API:- Otwórz konsolę Google Cloud.
- Kliknij menu projektu i wybierz projekt, który zawiera 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 i zmień nazwę klucza API ustaw ograniczenia:
- Ograniczenia interfejsów API
- Kliknij Ogranicz klucz.
- Kliknij Wybierz interfejsy API i zaznacz Maps JavaScript API oraz Places API.
(jeśli któryś z interfejsów API nie jest wymieniony, musisz go włączyć).
- Kliknij ZAPISZ.
Limity i zasady dotyczące wykorzystania
Limity
Biblioteka miejsc ma limit użycia wspólny z interfejsem Places API, zgodnie z opisem w dokumentacji dotyczącej limitów użycia interfejsu Places API.
Zasady
Korzystanie z biblioteki Places, Maps JavaScript API musi być zgodne z zasadami opisanymi w przypadku interfejsu Places API.
Wyszukiwanie miejsc
Korzystając z usługi Miejsca, możesz wykonywać te rodzaje wyszukiwań:
- Find Place from Query zwraca miejsce na podstawie zapytania tekstowego (np. nazwy lub adresu 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 tekstowezwraca listę miejsc w pobliżu na podstawie ciągu znaków wyszukiwania, np. „Pizza”.
- Zapytania o szczegóły miejscazwracają bardziej szczegółowe informacje o konkretnym miejscu, w tym opinie użytkowników.
Zwracane informacje mogą obejmować takie obiekty jak restauracje, sklepy i biura, a także wyniki „geokodowania”, które wskazują adresy, jednostki administracyjne, takie jak miasta i inne punkty zainteresowania.
Prośby o znajdowanie miejsca
Prośba o wyszukiwanie miejsca umożliwia wyszukiwanie miejsca za pomocą zapytania tekstowego lub numeru telefonu. Istnieją 2 typy żądań usługi Znajdź miejsce:
Znajdowanie miejsca na podstawie zapytania
FindPlaceFromQuery przyjmuje tekst jako dane wejściowe i zwraca miejsce. Dane wejściowe mogą być dowolnymi danymi Miejsca, np. nazwą lub adresem firmy. Aby wysłać żądanie FindPlaceFromQuery, wywołaj metodę PlacesService
findPlaceFromQuery()
, która przyjmuje te parametry:
query
(wymagany) Tekst, w którym ma być przeprowadzone wyszukiwanie, np. „restauracja” lub „123 Ulica Główna”. Musi to być nazwa miejsca, adres lub kategoria obiektu. Inne typy danych wejściowych mogą powodować błędy i nie ma gwarancji, że zwrócą prawidłowe wyniki. interfejs Places API zwróci dopasowania na podstawie tego ciągu znaków i uporządkuje wyniki według ich trafności.fields
(wymagany) Co najmniej 1 pole określające typy danych Miejsca do zwrócenia.locationBias
(opcjonalnie) współrzędne określające obszar wyszukiwania. Może to być:- Zestaw współrzędnych lat/lng określony jako LatLngLiteral lub obiekt LatLng.
- prostokątne granice (2 pary współrzędnych szerokości i długości geograficznej lub obiekt LatLngBounds),
- Promień (w metrach) wyśrodkowany na określonej szerokości i długości geograficznej.
Musisz też przekazać do findPlaceFromQuery()
metodę wywołania zwrotnego, aby obsłużyć obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus
.
Ten przykład pokazuje wywołanie funkcji findPlaceFromQuery()
, która wyszukuje „Museum of Contemporary Art Australia” i zawiera pola 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); } }); }
Znajdowanie miejsca na podstawie numeru telefonu
Funkcja Find Place from Phone Number (Znajdź miejsce na podstawie numeru telefonu) przyjmuje numer telefonu i zwraca miejsce. Aby wysłać żądanie Znajdź miejsce na podstawie numeru telefonu, wywołaj metodę PlacesService
findPlaceFromPhoneNumber()
, która przyjmuje te parametry:
phoneNumber
(wymagane) Numer telefonu w formacie E.164.fields
(wymagany) Co najmniej 1 pole określające typy danych Miejsca do zwrócenia.locationBias
(opcjonalnie) współrzędne definiujące obszar wyszukiwania. Może to być:- Zestaw współrzędnych lat/lng określony jako LatLngLiteral lub obiekt LatLng.
- prostokątne granice (4 punkty szerokości i długości geograficznej lub obiekt LatLngBounds);
- Promień (w metrach) wyśrodkowany na określonej szerokości i długości geograficznej.
Musisz też przekazać do findPlaceFromPhoneNumber()
metodę wywołania zwrotnego, aby obsłużyć obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus
.
Pola (metody FindPlace)
Aby określić tablicę typów danych o miejscach, które mają zostać zwrócone, użyj parametru fields
.
Na przykład: fields: ['formatted_address', 'opening_hours', 'geometry']
.
Podczas określania wartości złożonych używaj kropki. Na przykład: opening_hours.weekday_text
.
Pola odpowiadają wynikom wyszukiwania miejsc i są podzielone na 3 kategorie rozliczeniowe: podstawowa, kontaktowa i atmosferyczna. Za podstawowe pola jest naliczana stawka podstawowa i nie wiążą się z nimi żadne dodatkowe opłaty. Pola Kontakt i Atmosfera są rozliczane według wyższej stawki. Więcej informacji znajdziesz w cenniku. Atrybucje (html_attributions
) są zawsze zwracane w przypadku każdego wywołania, niezależnie od tego, czy zostało zażądane to pole.
Podstawowy
Kategoria podstawowa obejmuje 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 obejmuje następujące pole:opening_hours
(nieużywane) w Bibliotece Miejsc, Maps JavaScript API. Aby uzyskać wyniki
opening_hours
, użyj żądania Szczegóły miejsca.
Atmosfera
Kategoria Atmosfera zawiera te pola:price_level
, rating
, user_ratings_total
Metody findPlaceFromQuery()
i findPlaceFromPhoneNumber()
przyjmują ten sam zestaw pól i mogą zwracać te same pola w swoich odpowiedziach.
Ustawianie preferencji lokalizacji (metody wyszukiwania miejsca)
Aby usługa Znajdź miejsce faworyzowała wyniki z określonego obszaru, użyj parametru locationBias
. Możesz ustawić locationBias
w jeden z tych sposobów:
Wyniki można ograniczyć do konkretnego obszaru:
locationBias: {lat: 37.402105, lng: -122.081974}
Zdefiniuj prostokątny obszar wyszukiwania:
locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}
Możesz też użyć LatLngBounds.
Określ promień wyszukiwania (w metrach) wyśrodkowany na określony obszar:
locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}
Żądania wyszukiwania w pobliżu
Wyszukiwanie w pobliżu umożliwia wyszukiwanie miejsc w określonym obszarze za pomocą słowa kluczowego lub typu. Wyszukiwanie w pobliżu musi zawsze zawierać lokalizację, którą można określić na 2 sposoby:
- a
LatLngBounds
. - obszar koła zdefiniowany jako kombinacja właściwości
location
, która określa środek koła jako obiektLatLng
, oraz promienia zmierzonego w metrach.
Wyszukiwanie miejsc w pobliżu jest inicjowane przez wywołanie metody nearbySearch()
obiektu
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 przyjmuje żądanie z tymi polami:
- Wykonaj jedną z tych czynności:
bounds
, który musi być obiektemgoogle.maps.LatLngBounds
definiującym prostokątny obszar wyszukiwania. Maksymalna obsługiwana odległość na ukos dla obszaru ograniczonego jest równa około 100 tys. metrów.location
iradius
; pierwszy przyjmuje obiektgoogle.maps.LatLng
, a drugi – prostą liczbę całkowitą reprezentującą promień koła w metrach. Maksymalny dozwolony promień to 50 tys. metrów. Pamiętaj, że gdy parametrrankBy
ma wartość DISTANCE, musisz podać wartość parametrulocation
, ale nie możesz podać wartości parametruradius
anibounds
.
keyword
(opcjonalnie) – termin do dopasowania do wszystkich dostępnych pól, w tym między innymi nazwy, typu i adresu, a także opinii klientów i innych treści pochodzących od osób trzecich.minPriceLevel
imaxPriceLevel
(opcjonalnie) – ogranicza wyniki tylko do miejsc w określonym zakresie. Prawidłowe wartości mieszczą się w zakresie od 0 (najtańsze) do 4 (najdroższe) (obustronnie domknięte).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
(opcjonalnie) – wartość logiczna wskazująca, że usługa Miejsca powinna zwracać tylko te miejsca, które są otwarte w momencie wysłania zapytania. Miejsca, które nie podają godziny otwarcia w bazie danych Miejsca w Google, nie zostaną zwrócone, jeśli uwzględnisz ten parametr w zapytaniu. Ustawienie wartościopenNow
nafalse
nie ma żadnego wpływu.rankBy
(opcjonalnie) – określa kolejność wyświetlania wyników. Możliwe wartości:google.maps.places.RankBy.PROMINENCE
(domyślnie). Ta opcja sortuje wyniki według ich znaczenia. Ranking będzie faworyzować znane miejsca w określonym promieniu, a nie miejsca w pobliżu, które pasują do wyszukiwania, ale są mniej znane. Na renomę mogą mieć wpływ pozycja miejsca w indeksie Google, popularność na całym świecie i inne czynniki. Jeśli określono parametrgoogle.maps.places.RankBy.PROMINENCE
, parametrradius
jest wymagany.google.maps.places.RankBy.DISTANCE
. Ta opcja sortuje wyniki w kolejności rosnącej według ich odległości od określonego punktulocation
(wymagane). Pamiętaj, że nie możesz określić niestandardowego parametrubounds
aniradius
, jeśli określisz parametrRankBy.DISTANCE
. Jeśli określisz parametrRankBy.DISTANCE
, wymagany jest co najmniej jeden z parametrówkeyword
,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 pierwszym wpisie zostaną zignorowane). Zobacz listę obsługiwanych typów.
Musisz też przekazać do nearbySearch()
metodę wywołania zwrotnego, aby obsłużyć 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]); } } }
Prośby o wyszukiwanie tekstu
Usługa wyszukiwania tekstowego w Mapach Google to usługa internetowa, która zwraca informacje o zbiorze miejsc na podstawie ciągu znaków, np. „pizza w Warszawie” lub „sklepy obuwnicze w pobliżu Warszawy”. Usługa odpowiada listą miejsc pasujących do ciągu tekstowego oraz wszelkich ustawionych ustawień lokalizacji. Odpowiedź na wyszukiwanie będzie zawierać listę miejsc. Aby uzyskać więcej informacji o dowolnym miejscu w odpowiedzi, możesz wysłać prośbę o szczegółowe dane o miejscu.
Wyszukiwanie tekstu jest inicjowane przez wywołanie metody PlacesService
w PlacesService
.textSearch()
service = new google.maps.places.PlacesService(map); service.textSearch(request, callback);
Ta metoda przyjmuje żądanie z tymi polami:
query
(wymagany) Tekst, w którym ma być przeprowadzone wyszukiwanie, np. „restauracja” lub „123 Ulica Główna”. Musi to być nazwa, adres lub kategoria obiektu. Wprowadzanie innych danych może powodować błędy i nie gwarantuje uzyskania prawidłowych wyników. Usługa Places zwróci dopasowania na podstawie tego ciągu znaków i porządkuje wyniki według ich trafności. Ten parametr staje się opcjonalny, jeśli w żądaniu wyszukiwania jest też używany parametrtype
.- Opcjonalnie:
openNow
– wartość logiczna wskazująca, że usługa Miejsca powinna zwracać tylko te miejsca, które są otwarte w momencie wysłania zapytania. Miejsca, które nie podają godzin otwarcia w bazie danych Google Places, nie zostaną zwrócone, jeśli uwzględnisz ten parametr w zapytaniu. Ustawienie wartościopenNow
nafalse
nie ma żadnego wpływu.minPriceLevel
imaxPriceLevel
— ogranicza wyniki tylko do miejsc w określonym przedziale cenowym. Prawidłowe wartości to od 0 (najtańsza) do 4 (najdroższa) włącznie.- Możesz wybrać jedną z tych opcji:
bounds
, który musi być obiektemgoogle.maps.LatLngBounds
definiującym prostokątny obszar wyszukiwania. Maksymalna obsługiwana odległość na ukos dla obszaru ograniczonego przez granice to około 100 tys. metrów.location
iradius
– możesz stosować wyniki w określonym kręgu, podając parametrlocation
iradius
. Spowoduje to, że usługa Miejsca będzie preferować wyświetlanie wyników w tym kręgu. Wyniki spoza zdefiniowanego obszaru mogą być nadal wyświetlane. Lokalizacja przyjmuje obiektgoogle.maps.LatLng
, a promień przyjmuje prostą liczbę całkowitą, która reprezentuje promień okręgu w metrach. Maksymalny dozwolony promień to 50 tys. metrów.
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 pierwszym wpisie zostaną zignorowane). Zobacz listę obsługiwanych typów.
Musisz też przekazać do textSearch()
metodę wywołania zwrotnego, aby obsłużyć 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]); } } }
Odpowiedzi na zapytania w wyszukiwarce
Kody stanu
Obiekt odpowiedzi PlacesServiceStatus
zawiera stan żądania i może zawierać informacje debugowania, które pomogą Ci ustalić, dlaczego żądanie dotyczące miejsca się nie powiodło. Możliwe wartości stanu:
INVALID_REQUEST
: ta prośba była nieprawidłowa.OK
: odpowiedź zawiera prawidłowy wynik.OVER_QUERY_LIMIT
: strona przekroczyła limit żądań.REQUEST_DENIED
: strona internetowa 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, żądanie może się powieść.ZERO_RESULTS
: nie znaleziono wyników dla tego zapytania.
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 działania miejsca, jeśli jest to firma. Może ona zawierać jedną z tych wartości:OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
nie zostanie zwrócony.formatted_address
to ciąg tekstowy zawierający adres tego miejsca w formie zrozumiałej dla człowieka. Właściwośćformatted_address
jest zwracana tylko w przypadku wyszukiwania tekstowego.Często jest to adres pocztowy. Pamiętaj, że niektóre kraje, takie jak Wielka Brytania, nie zezwalają na rozpowszechnianie prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.
Sformatowany adres składa się z co najmniej 1 elementu adresu. Na przykład adres „111 8th Avenue, Nowy Jork, NY” składa się z tych elementów: „111” (numer domu), „8th Avenue” (ulica), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu za pomocą kodu. Zamiast tego użyj poszczególnych elementów adresu, które są zawarte w odpowiedzi interfejsu API oprócz sformatowanego pola adresu.
geometry
: informacje o geometrii miejsca. Obejmuje to:location
zawiera szerokość i długość geograficzną miejsca.viewport
definiuje preferowany widok mapy podczas wyświetlania tego miejsca.
permanently_closed
(zastąpiona) to flaga logiczna wskazująca, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartośćtrue
). Nie używaj wartościpermanently_closed
. Zamiast tego użyj właściwościbusiness_status
, aby uzyskać informacje o stanie działania firmy.plus_code
(patrz Open Location Code i kody plus) to zakodowane odniesienie do lokalizacji, wyprowadzone ze współrzędnych 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 Code mogą zastępować adresy ulicy w miejscach, w których ich nie ma (gdzie budynki nie mają numerów lub ulice nie mają nazw).Kod plus ma format kodu globalnego i kodu złożonego:
global_code
to 4-znakowy kod obszaru i 6-znakowy kod lokalny (849VCWC8+R9).compound_code
to kod lokalny o długości co najmniej 6 znaków z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tych treści za pomocą programu.
html_attributions
: tablica atrybucji, które należy wyświetlać podczas wyświetlania wyników wyszukiwania. Każdy wpis w tablicy zawiera tekst HTML odpowiadający jednemu przypisaniu. Uwaga: jest to agregacja wszystkich atrybucji w przypadku całej odpowiedzi na wyszukiwanie. Wszystkie obiektyPlaceResult
w odpowiedzi zawierają więc identyczne listy atrybucji.icon
zwraca adres URL kolorowej ikony PNG o wymiarach 71 x 71 pikseli.icon_mask_base_uri
zwraca podstawowy adres URL ikony bez koloru bez rozszerzenia .svg ani .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 dane miejsce jest obecnie otwarte (wycofana w bibliotece Miejsc, Maps JavaScript API, użyj zamiast tego wartościutc_offset_minutes
).
place_id
to identyfikator tekstowy, który jednoznacznie identyfikuje miejsce. Aby pobrać informacje o danym miejscu, prześlij ten identyfikator w prośbie o szczegóły miejsca. Dowiedz się więcej o tym, jak odwoływać się do miejsca za pomocą identyfikatora miejsca.rating
zawiera ocenę miejsca, od 0,0 do 5,0, obliczoną na podstawie zagregowanych opinii użytkowników.types
Tablica typów tego miejsca (np.["political", "locality"]
lub["restaurant", "lodging"]
). Ten tablicowy obiekt może zawierać wiele wartości lub być pusty. Nowe wartości mogą być wprowadzane bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.vicinity
: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i miejscowość, ale nie województwo, kod pocztowy ani kraj. Na przykład biuro Google w Sydney w Australii ma wartośćvicinity
5/48 Pirrama Road, Pyrmont
.
Otwieranie wyników dodatkowych
Domyślnie każde wyszukiwanie miejsca zwraca maksymalnie 20 wyników na zapytanie. Jednak każde wyszukiwanie może 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ść logiczna wskazująca, czy dostępne są kolejne wyniki.true
gdy jest dostępna dodatkowa strona wyników.nextPage()
funkcję, która zwróci następny zestaw wyników. Po wykonaniu wyszukiwania musisz odczekać 2 sekund, zanim będzie dostępna następna strona wyników.
Aby wyświetlić kolejny zestaw wyników, wywołaj funkcję nextPage
.
Każda strona wyników musi być 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 użytkowania.
Przykład poniżej pokazuje, jak zmienić funkcję wywołania zwrotnego, aby przechwytywać obiekt PlaceSearchPagination
, dzięki czemu możesz wysyłać wiele żą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 próbkę
Szczegóły miejsc
Oprócz listy miejsc w danym obszarze usługa Places może też zwracać szczegółowe informacje o konkretnym miejscu. Gdy miejsce zostanie zwrócone w odpowiedzi na zapytanie o wyszukiwanie miejsc, można użyć identyfikatora miejsca, aby poprosić o dodatkowe informacje o tym miejscu, takie jak pełny adres, numer telefonu, ocena użytkowników i opinie.
Prośby o szczegóły miejsca
Szczegóły miejsca są żądane przez wywołanie metody getDetails()
usługi.
service = new google.maps.places.PlacesService(map); service.getDetails(request, callback);
Ta metoda przyjmuje żądanie zawierające placeId
żądanego miejsca i pola wskazujące, które typy danych Places mają zostać zwrócone. Dowiedz się więcej o tym, jak odwoływać się do miejsca za pomocą identyfikatora miejsca.
Przyjmuje też metodę 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 (informacje o miejscu)
Parametrfields
przyjmuje tablicę ciągów znaków (nazwy pól).
Aby określić tablicę typów danych o miejscach, które mają zostać zwrócone, użyj parametru fields
.
Na przykład: fields: ['address_components', 'opening_hours', 'geometry']
.
Podczas określania wartości złożonych używaj kropki. Na przykład: opening_hours.weekday_text
.
Pola odpowiadają wynikom funkcji Szczegóły miejsca i są podzielone na 3 kategorie płatności: podstawowa, kontaktowa i Atmosfera. Pole podstawowe jest rozliczane według stawki podstawowej i nie powoduje 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 w przypadku każdego wywołania, niezależnie od tego, czy zostało to zażądane.
Podstawowy
Kategoria podstawowa obejmuje następujące 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
w Bibliotece Miejsc, Maps JavaScript API), utc_offset_minutes
,
vicinity
Nawiązanie kontaktu,
Kategoria Kontakt obejmuje 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 Miejsce. Więcej informacji o rozliczeniach za żądania danych o miejscach znajdziesz w artykule Używanie i rozliczanie.
Odpowiedzi dotyczące szczegółów miejsca
Kody stanu
Obiekt odpowiedzi PlacesServiceStatus
zawiera stan żądania i może zawierać informacje debugowania, które pomogą Ci ustalić, dlaczego żądanie informacji o miejscu zakończyło się niepowodzeniem. Możliwe wartości stanu:
INVALID_REQUEST
: ta prośba była nieprawidłowa.OK
: odpowiedź zawiera prawidłowy wynik.OVER_QUERY_LIMIT
: strona przekroczyła limit żądań.NOT_FOUND
Nie znaleziono wskazanej lokalizacji w bazie danych Miejsca.REQUEST_DENIED
: strona internetowa 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, żądanie może się powieść.ZERO_RESULTS
: nie znaleziono wyników dla tego zapytania.
Wyniki wyszukiwania informacji o miejscu
Pomyślnie wykonane wywołanie getDetails()
zwraca obiekt
PlaceResult
z tymi właściwościami:
address_components
: tablica zawierająca oddzielne komponenty obowiązujące w przypadku tego adresu.Każdy element adresu zawiera zwykle te pola:
types[]
to tablica wskazująca typ elementu adresu. Zobacz listę obsługiwanych typów.long_name
to pełny tekst opisu lub nazwa komponentu adresu zwróconego przez geokoder.short_name
to skrócona nazwa tekstowa składnika adresu (jeśli jest dostępna). Na przykład element adresu w przypadku stanu Alaska może miećlong_name
„Alaska” ishort_name
„AK” (2-literowy skrót pocztowy).
Pamiętaj o tych informacjach dotyczących tablicy
address_components[]
:- Tablica elementów adresu może zawierać więcej elementów niż
formatted_address
. - Tablica niekoniecznie zawiera wszystkie podmioty polityczne, które zawierają adres, z wyjątkiem tych, które są uwzględnione w tablicy
formatted_address
. Aby pobrać wszystkie jednostki polityczne, które zawierają określony adres, należy użyć odwrotnego geokodowania, przekazując szerokość/długość geograficzną adresu jako parametr żądania. - Nie ma gwarancji, że format odpowiedzi będzie taki sam w przypadku różnych żądań. W szczególności liczba
address_components
zależy od adresu, którego dotyczy żądanie, i może się z czasem zmieniać w przypadku tego samego adresu. Element może zmienić pozycję w tablicy. Typ komponentu może się zmienić. W późniejszej odpowiedzi może brakować określonego komponentu.
business_status
wskazuje stan działania miejsca, jeśli jest to firma. Może ona zawierać jedną z tych wartości:OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
nie jest zwracany.formatted_address
: czytelny dla człowieka adres tego miejsca.Często jest to adres pocztowy. Pamiętaj, że niektóre kraje, takie jak Wielka Brytania, nie zezwalają na rozpowszechnianie prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.
Sformatowany adres składa się z co najmniej 1 elementu adresu. Na przykład adres „111 8th Avenue, Nowy Jork, NY” składa się z tych elementów: „111” (numer domu), „8th Avenue” (ulica), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu za pomocą kodu. Zamiast tego użyj poszczególnych elementów adresu, które są zawarte w odpowiedzi interfejsu API oprócz sformatowanego pola adresu.
formatted_phone_number
: numer telefonu miejsca, sformatowany zgodnie z regionalną konwencją numerów.geometry
: informacje o geometrii miejsca. Obejmuje to:location
zawiera szerokość i długość geograficzną miejsca.viewport
definiuje preferowany widok mapy podczas wyświetlania tego miejsca.
permanently_closed
(zastąpiona) to flaga logiczna wskazująca, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartośćtrue
). Nie używaj wartościpermanently_closed
. Zamiast tego użyj właściwościbusiness_status
, aby uzyskać stan operacyjny firm.plus_code
(patrz Open Location Code i kody plus) to zakodowane odniesienie do lokalizacji, wyprowadzone ze współrzędnych 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 Code mogą zastępować adresy ulicy w miejscach, w których ich nie ma (gdzie budynki nie mają numerów lub ulice nie mają nazw).Kod plus ma format kodu globalnego i kodu złożonego:
global_code
to 4-znakowy kod obszaru i 6-znakowy kod lokalny (849VCWC8+R9).compound_code
to kod lokalny o długości co najmniej 6 znaków z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tych treści za pomocą programu.
html_attributions
: tekst źródła wyświetlany w przypadku tego wyniku miejsca.icon
: adres URL zasobu z obrazem, który może służyć do reprezentowania typu tego miejsca.international_phone_number
zawiera numer telefonu miejsca w formacie międzynarodowym. Format międzynarodowy zawiera kod kraju i jest poprzedzony znakiem plusa (+). Na przykładinternational_phone_number
biura Google w Sydney w Australii to+61 2 9374 4000
.name
: nazwa miejsca.utc_offset
Wycofane w Bibliotece Miejsc, Maps JavaScript API, użyj zamiast tegoutc_offset_minutes
.utc_offset_minutes
zawiera liczbę minut, o którą obecna strefa czasowa tego miejsca różni się od UTC. Na przykład w Sydney w Australii w czasie stosowania czasu letniego wartość ta wynosi 660 (+11 godzin względem UTC), a w Kalifornii poza okresem czasu letniego –480 (-8 godzin względem UTC).opening_hours
zawiera te informacje:open_now
(wycofane z biblioteki Miejsca, Maps JavaScript API; użyj zamiast tego funkcji opening_hours.isOpen()). Aby dowiedzieć się, jak korzystać zisOpen
w przypadku szczegółów miejsca, obejrzyj ten film. to wartość logiczna wskazująca, czy miejsce jest obecnie otwarte.periods[]
to tablica okresów otwarcia obejmująca 7 dni, począwszy od niedzieli, w porządku chronologicznym. Każdy okres zawiera:open
zawiera parę obiektów typu dzień i godzina, które określają, kiedy dane miejsce jest otwarte:day
liczba z zakresu 0–6 odpowiadająca dniom tygodnia, zaczynając od niedzieli. Na przykład 2 oznacza wtorek.time
może zawierać godzinę w formacie 24-godzinnym hh:mm (wartości w zakresie 0000–2359). Wartośćtime
będzie raportowana w strefie czasowej miejsca.
close
może zawierać parę obiektów dzień i godzina, która określa, kiedy dane miejsce jest zamknięte. Uwaga: jeśli miejsce jest zawsze otwarte, w odpowiedzi nie będzie sekcjiclose
. Aplikacje mogą korzystać z funkcji zawsze otwartej, która jest reprezentowana przez 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 Szczegóły miejsca podano parametrlanguage
, usługa Places sformatuje i przetłumaczy godziny otwarcia na odpowiedni język. Kolejność elementów w tej tablicy zależy od parametrulanguage
. W niektórych językach tydzień zaczyna się w poniedziałek, a w innych w niedzielę.
permanently_closed
(zastąpiona) to flaga logiczna wskazująca, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartośćtrue
). Nie używaj wartościpermanently_closed
. Zamiast tego użyj właściwościbusiness_status
, aby uzyskać informacje o stanie działania firmy.photos[]
: tablica obiektówPlacePhoto
. Możesz użyćPlacePhoto
, aby uzyskać zdjęcie za pomocą metodygetUrl()
, lub 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 wyświetlany na zdjęciu miejsca.
place_id
: identyfikator tekstowy jednoznacznie identyfikujący miejsce i umożliwiający pobieranie informacji o nim za pomocą żądania szczegółów miejsca. Dowiedz się więcej o tym, jak odwoływać się do miejsca za pomocą identyfikatora miejsca.rating
: ocena miejsca, od 0,0 do 5,0, na podstawie zbiorczych opinii użytkowników.reviews
tablicę z maksymalnie 5 opiniami. Każda opinia składa się z kilku elementów:- Obiekt
aspects[]
zawiera tablicę obiektówPlaceAspectRating
, z których każdy zawiera ocenę jednego atrybutu obiektu. Pierwszy obiekt w tablicy jest uważany za główny aspekt. Każdy elementPlaceAspectRating
jest zdefiniowany jako:type
nazwa aspektu, który jest oceniany. Obsługiwane są te typy:appeal
,atmosphere
,decor
,facilities
,food
,overall
,quality
iservice
.rating
ocena użytkownika dotycząca tego aspektu, od 0 do 3.
author_name
nazwa użytkownika, który przesłał opinię. Anonimowe opinie są przypisywane do „użytkownika Google”. Jeśli parametr language został ustawiony, wyrażenie „Użytkownik Google” zwróci lokalny 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 tag głównego języka, a nie tag pomocniczy wskazujący kraj lub region. Na przykład wszystkie opinie w języku angielskim są otagowane jako „en”, a nie „en-PL”, „en-US” itd.rating
ogólna ocena użytkownika tego miejsca. Jest to liczba całkowita z zakresu od 1 do 5.text
opinię użytkownika. W przypadku opinii o lokalizacji w Google Places opinie tekstowe są opcjonalne, dlatego to pole może być puste.
- Obiekt
types
Tablica typów tego miejsca (np.["political", "locality"]
lub["restaurant", "lodging"]
). Ten tablicowy argument może zawierać wiele wartości lub może być pusty. Nowe wartości mogą być wprowadzane bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.url
: adres URL oficjalnej strony Google dotyczącej danego miejsca. To strona należąca do Google, która zawiera najlepsze dostępne informacje o danym miejscu. Aplikacje muszą zawierać link do tej strony lub ją osadzić na dowolnym ekranie, na którym użytkownikowi wyświetlane są szczegółowe wyniki dotyczące danego miejsca.vicinity
: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i miejscowość, ale nie województwo, kod pocztowy ani kraj. Na przykład biuro Google w Sydney w Australii ma wartośćvicinity
5/48 Pirrama Road, Pyrmont
. Właściwośćvicinity
jest zwracana tylko w przypadku wyszukiwania w pobliżu.website
zawiera stronę internetową z informacjami o danym miejscu, na przykład stronę główną firmy.
Uwaga: oceny wielowymiarowe mogą być niedostępne w niektórych lokalizacjach. Jeśli jest za mało opinii, odpowiedź z informacjami będzie zawierać albo starą ocenę w skali od 0,0 do 5,0 (jeśli jest dostępna), albo wcale nie będzie zawierać oceny.
Odwoływanie się do miejsca za pomocą identyfikatora miejsca
Identyfikator miejsca to unikalne odwołanie do miejsca na Mapach Google. Identyfikatory miejsc są dostępne w przypadku większości lokalizacji, w tym firm, punktów orientacyjnych, parków i skrzyżowań.
Aby użyć identyfikatora miejsca w aplikacji, musisz najpierw go wyszukać. Jest on dostępny w PlaceResult
żądania wyszukiwania miejsca lub szczegółów.
Następnie możesz użyć tego identyfikatora miejsca, aby sprawdzić szczegóły miejsca.
Identyfikatory miejsc nie podlegają ograniczeniom dotyczącym pamięci podręcznej określonym w sekcji 3.2.3(b) Warunków korzystania z usługi Google Maps Platform. Dzięki temu możesz zapisać wartości identyfikatorów miejsc na później. Sprawdzone metody przechowywania identyfikatorów miejsc znajdziesz w artykule Omówienie 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ęcie miejsca umożliwia dodawanie do witryny wysokiej jakości treści fotograficznych. Usługa Zdjęcia daje dostęp do milionów zdjęć przechowywanych w bazie danych Miejsca i Google+ Local. Gdy pobierasz informacje o miejscu za pomocą żądania Szczegóły miejsca, otrzymasz odwołania do zdjęć przedstawiających odpowiednie treści. Żądania wyszukiwania w pobliżu i wyszukiwania tekstowego zwracają też w razie potrzeby po jednym odwołaniu do zdjęcia na miejsce. Korzystając z usługi Zdjęcia, możesz uzyskać dostęp do zdjęć, do których odwołują się te informacje, oraz zmienić rozmiar obrazu do optymalnego rozmiaru dla Twojej aplikacji.
Tablica obiektów PlacePhoto
zostanie zwrócona jako część obiektu PlaceResult
w przypadku dowolnego żądania getDetails()
, textSearch()
lub nearbySearch()
przesłanego do zasobu PlacesService
.
Uwaga: liczba zwróconych zdjęć zależy od żądania.
- Wyszukiwanie w pobliżu lub wyszukiwanie tekstowe zwraca maksymalnie 1
PlacePhoto
obiekt. - Żądanie dotyczące szczegółów zwróci maksymalnie 10 obiektów
PlacePhoto
.
Aby uzyskać adres URL powiązanego zdjęcia, wywołaj metodę PlacePhoto.getUrl()
, podając prawidłowy obiekt PhotoOptions
. Obiekt PhotoOptions
umożliwia określenie maksymalnej żądanej wysokości i szerokości obrazu. Jeśli określisz wartość zarówno dla atrybutu maxHeight
, jak i dla atrybutu maxWidth
, usługa fotograficzna zmieni rozmiar obrazu na mniejszy z tych dwóch, zachowując oryginalny współczynnik proporcji.
Ten fragment kodu przyjmuje obiekt miejsca i dodaje znacznik do mapy, jeśli istnieje zdjęcie. Domyślny obraz znacznika jest zastępowany 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 źródeł, w tym od właścicieli firm i użytkowników. W większości przypadków zdjęcia te można używać bez przypisania autorstwa lub będą one zawierać wymagane informacje o autorze. Jeśli jednak zwrócony element photo
zawiera wartość w polu html_attributions
, musisz uwzględnić dodatkowe informacje o autorze w aplikacji wszędzie tam, gdzie wyświetlasz obraz.