biblioteka Miejsc

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Opis

Funkcje dostępne w Bibliotece miejsc, a także interfejs Maps JavaScript API umożliwiają aplikacji wyszukiwanie miejsc (definiowanych w tym interfejsie jako obiektów, lokalizacji geograficznych lub ważnych miejsc) znajdujących się na określonym obszarze, takich jak granice mapy lub wokół ustalonego punktu.

Interfejs Places API umożliwia korzystanie z funkcji autouzupełniania, dzięki której aplikacje mogą wpisywać w wyszukiwarce Google Mapy z wyprzedzeniem wyniki wyszukiwania. Gdy użytkownik zacznie wpisywać adres, autouzupełnianie wypełni je. Więcej informacji znajdziesz w dokumentacji autouzupełniania.

Pierwsze kroki

Jeśli nie znasz jeszcze interfejsu API JavaScript JavaScript Map lub nie znasz JavaScriptu, zanim zaczniesz, sprawdź kod JavaScript i pobierz klucz interfejsu API.

Włącz interfejsy API

Zanim zaczniesz korzystać z biblioteki Miejsc w interfejsie Maps JavaScript API, najpierw upewnij się, że interfejs Places API jest włączony w Google Cloud Console, w tym samym projekcie skonfigurowanym dla interfejsu Maps JavaScript API.

Aby wyświetlić listę włączonych interfejsów API:

  1. Otwórz Google Cloud Console.
  2. Kliknij przycisk Wybierz projekt, a potem wybierz ten sam projekt, który masz skonfigurowany w interfejsie Maps JavaScript API, i kliknij Otwórz.
  3. Na liście interfejsów API w panelu znajdź Places API.
  4. Jeśli na liście znajduje się interfejs Places API, oznacza to, że jest on już włączony. Jeśli interfejsu API nie ma na liście, włącz go:
    1. U góry strony wybierz WŁĄCZ INTERFEJSY API I USŁUGI, aby wyświetlić kartę Biblioteka. Możesz też wybrać Biblioteka z menu po lewej stronie.
    2. Wyszukaj Places API, a następnie wybierz go z listy wyników.
    3. Wybierz WŁĄCZ. Po zakończeniu procesu Places API pojawi się na liście interfejsów API w panelu.

Wczytuję bibliotekę

Usługa Miejsca to samodzielna biblioteka, niezależna od głównego kodu interfejsu API JavaScript Map Google. Aby korzystać z funkcji zawartych w tej bibliotece, musisz najpierw wczytać go za pomocą parametru libraries w adresie URL rozruchu 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

Zastosowanie ograniczeń API do kluczy ogranicza wykorzystanie klucza interfejsu API do co najmniej jednego interfejsu API lub pakietów 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 będą kończyć się niepowodzeniem. Aby ograniczyć klucz interfejsu API do korzystania z biblioteki Miejsc, interfejsu Maps JavaScript API:
  1. Otwórz Google Cloud Console.
  2. Kliknij menu projektu i wybierz projekt zawierający klucz interfejsu API, który chcesz zabezpieczyć.
  3. Kliknij przycisk menu i wybierz Google Maps Platform > Credentials (Dane logowania).
  4. Na stronie Dane logowania kliknij nazwę klucza interfejsu API, który chcesz zabezpieczyć.
  5. Na stronie Ogranicz i zmień nazwę klucza interfejsu API ustaw ograniczenia:
    • Ograniczenia interfejsów API
      • Wybierz Ogranicz klucz.
      • Kliknij Wybierz interfejsy API i wybierz Interfejs Maps JavaScript API oraz Miejsca interfejsu API.
        Jeśli na liście nie ma żadnego z tych interfejsów API, musisz go włączyć.
  6. Kliknij ZAPISZ.

Limity i zasady użytkowania

Limity

Interfejs Library API, a także interfejs JavaScript API dzielący limit wykorzystania z interfejsem Places API, tak jak to opisano w dokumentacji limitów miejsca dla interfejsu Places API. Limit liczby zapytań na sekundę jest dodawany do sesji użytkownika niezależnie od tego, ilu użytkowników korzysta z tego samego projektu*.

Uwaga: przy pierwszym wczytaniu interfejsu API przydzielany jest początkowy limit żądań. Gdy korzystasz z tego limitu, interfejs API egzekwuje limity liczby żądań na sekundę. Jeśli w określonym czasie pojawi się zbyt wiele żądań, interfejs API zwróci kod odpowiedzi OVER_QUERY_LIMIT. Limit liczby żądań na sesję uniemożliwia korzystanie z usług po stronie klienta w przypadku żądań zbiorczych. W przypadku żądań zbiorczych użyj naszych interfejsów API usługi internetowej.

Zasady

Korzystanie z Biblioteki miejsc i interfejsu Maps JavaScript API musi być zgodne z zasadami opisanymi w interfejsie Places API.

Wyszukiwanie miejsc

Usługa Miejsca Google umożliwia wykonywanie następujących rodzajów wyszukiwań:

Zwrócone informacje mogą obejmować instytucje, takie jak restauracje, sklepy i biura, a także wyniki wyszukiwania (dane geograficzne), takie jak adresy, obszary polityczne (np. miasta i miejscowości), oraz inne ciekawe miejsca.

Znajdowanie żądań miejsc

Żądanie Znajdź miejsce umożliwia wyszukiwanie miejsca za pomocą zapytania tekstowego lub numeru telefonu. Istnieją 2 typy żądania Znajdź miejsce:

Znajdź miejsce na podstawie zapytania

Funkcja Znajdź miejsce z zapytania wpisuje tekst i zwraca miejsce. Dane wejściowe mogą być dowolnymi danymi miejsca, takimi jak nazwa firmy czy adres. Aby utworzyć żądanie Znajdź z zapytania, wywołaj metodę PlaceServicefindPlaceFromQuery(), która przyjmuje te parametry:

  • query (wymagany) ciąg tekstowy, na przykład: "restauracja" &&tt;123 Main Street". Musi to być nazwa miejsca, adres lub kategoria instytucji. Inne typy danych wejściowych mogą powodować błędy i nie mogą zagwarantować prawidłowych wyników. Interfejs Places API zwraca dopasowania kandydatów na podstawie tego ciągu i sortuje wyniki na podstawie ich trafności.
  • fields (wymagane) Co najmniej 1 pole, które określa typy danych miejsc do zwrócenia.
  • locationBias (Opcjonalnie) Współrzędne współrzędnych obszaru wyszukiwania. Może być to jedna z tych wartości:
    • Zestaw współrzędnych szerokości i długości geograficznej określony jako obiekt LatLng lub LatLng.
    • Granice prostokątne (dwie pary szerokości i długości geograficznej lub obiekt LatLngBound)
    • Promień (w metrach) wyśrodkowany na szerokości lub długości geograficznej

Musisz też przekazać metodę wywołania zwrotnego do findPlaceFromQuery(), aby obsłużyć obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus.

W tym przykładzie podano wywołanie elementu findPlaceFromQuery(), wyszukiwanie &muzeum sztuki współczesnej w Australii, w tym 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);
    }
  });
}
Wyświetl przykład

Znajdź miejsce z numeru telefonu

Funkcja Znajdź miejsce z numeru telefonu pobiera numer telefonu i zwraca miejsce. Aby utworzyć żądanie Znajdź miejsce z numeru telefonu, wywołaj metodę PlaceServicefindPlaceFromPhoneNumber(), która przyjmuje te parametry:

  • phoneNumber (wymagany) numer telefonu w formacie E.164.
  • fields (wymagane) Co najmniej 1 pole, które określa typy danych miejsc do zwrócenia.
  • locationBias (opcjonalnie) współrzędnych określający obszar wyszukiwania. Oto możliwe przyczyny:
    • Zestaw współrzędnych szerokości i długości geograficznej określony jako obiekt LatLng lub LatLng.
    • Granice prostokątne (4 punkty szerokości i czasu albo obiekt LatLngBound)
    • Promień (w metrach) wyśrodkowany na szerokości lub długości geograficznej

Musisz też przekazać metodę wywołania zwrotnego do findPlaceFromPhoneNumber(), aby obsłużyć obiekt wyników i odpowiedź google.maps.places.PlacesServiceStatus.

Pola (Znajdź metody miejsc)

Użyj parametru fields, aby określić tablicę typów danych o miejscach 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 płatności: Podstawowe, Kontakty i Atmosfera. Pola podstawowe są rozliczane zgodnie ze stawką podstawową i nie wiążą się z dodatkowymi opłatami. Koszty w polach kontaktu i atmosfery są wyższe. Więcej informacji znajdziesz w arkuszu cenowym. Atrybucja (html_attributions) jest zawsze zwracana przy każdym wywołaniu, niezależnie od tego, czy pole zażądano.

Podstawowe

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

Kontakt

Kategoria kontaktu zawiera to pole: opening_hours
(wycofane w bibliotece miejsc, interfejsie Maps JavaScript API. Aby uzyskać wyniki opening_hours, użyj żądania szczegółów miejsca.

Klimat

Kategoria Atmosfera obejmuje te pola: price_level, rating, user_ratings_total

Każda z metod findPlaceFromQuery() i findPlaceFromPhoneNumber() składa się z tego samego zestawu pól i może zwracać te same pola w odpowiedziach.

Ustawianie odchylenia lokalizacji (Znajdowanie metod umieszczania)

Użyj parametru locationBias, aby sprawić, że wyniki wyszukiwania będą wyświetlane w określonej okolicy. Możesz ustawić locationBias w następujący sposób:

Wyniki wyszukiwania dla konkretnego obszaru:

locationBias: {lat: 37.402105, lng: -122.081974}

Zdefiniuj prostokątny obszar do wyszukania:

locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}

Możesz też użyć obiektu LatLngBounds.

Definiowanie obszaru wyszukiwania (w metrach) wyśrodkowanego na konkretnym obszarze:

locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}

Zapytania 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 zawierać lokalizację, którą można określić na 2 sposoby:

  • LatLngBounds.
  • Okrągły obszar zdefiniowany jako połączenie właściwości location (określając środek koła jako obiekt LatLng) i promień mierzony w metrach.

Wyszukiwanie w pobliżu jest inicjowane przez wywołanie metody PlacesServicenearbySearch(), która zwraca tablicę obiektów PlaceResult. Pamiętaj, że metoda nearbySearch() zastępuje metodę search() w wersji 3.9.

service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

Ta metoda przyjmuje żądanie z tymi polami:

  • Może to być:
    • bounds, który musi być obiektem google.maps.LatLngBounds definiującym prostokątny obszar wyszukiwania;
    • location i radius. Pierwszy stosuje obiekt google.maps.LatLng, a drugi – prostą liczbę całkowitą, reprezentujący promień koła w metrach. Maksymalny dozwolony promień to 50 000 metrów. Pamiętaj, że gdy rankBy ma wartość DISTANCE, musisz określić właściwość location, ale nie możesz określić właściwości radius ani bounds.
  • keyword (opcjonalny) – wyszukiwane hasło pasujące do wszystkich dostępnych pól, w tym między innymi imię i nazwisko, typ i adres oraz opinie klientów i inne treści firm zewnętrznych.
  • minPriceLevel i maxPriceLevel (opcjonalny) – powoduje ograniczenie wyników tylko do tych miejsc w wybranym zakresie. Prawidłowe wartości: od 0 (najtańsza) do 4 (najdroższa).
  • name – wycofane. Odpowiednik: keyword. Wartości w tym polu są łączone z wartościami w polu keyword i przekazywane jako część tego samego ciągu wyszukiwania.
  • openNow (opcjonalny) – wartość logiczna wskazująca, że w momencie wysyłania zapytania usługa Miejsca powinna zwracać tylko te miejsca, które są otwarte. Miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane, jeśli podasz w swoim zapytaniu ten parametr. Ustawienie zasady openNow na false 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 sortuje wyniki według ich znaczenia. Pozycja w rankingu będzie ważniejsza niż te znajdujące się w pobliżu miejsc, które są takie same, ale są mniej widoczne. Na pozycję w rankingu mogą mieć wpływ pozycja w indeksie Google, popularność na całym świecie i inne czynniki. Jeśli podany jest element google.maps.places.RankBy.PROMINENCE, wymagany jest parametr radius.
    • google.maps.places.RankBy.DISTANCE. Ta opcja powoduje sortowanie w kolejności rosnącej według odległości od określonych wartości location (wymagane). Pamiętaj, że nie możesz podać niestandardowych wartości bounds lub radius, jeśli podasz RankBy.DISTANCE. Jeśli podasz RankBy.DISTANCE, wymagana jest co najmniej jedna właściwość keyword, name lub type.
  • type – ogranicza wyniki do miejsc pasujących do określonego typu. Możesz podać tylko jeden typ (jeśli podasz więcej niż 1 typ, wszystkie typy następujące po pierwszym wpisie są ignorowane). Zobacz listę obsługiwanych typów.

Musisz też przekazać metodę wywołania zwrotnego do nearbySearch(), 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]);
    }
  }
}

Zobacz przykład

Prośby o wyszukiwanie tekstu

Usługa wyszukiwania tekstowego Miejsc Google to usługa internetowa, która zwraca informacje o zestawie miejsc na podstawie ciągu znaków – na przykład "pizza w Warszawie lub &"buty w pobliżu Wrocławia. Usługa odpowiada za pomocą listy miejsc pasujących do ciągu tekstowego i wszelkich ustawionych odchylenia lokalizacji. Odpowiedź będzie zawierać listę miejsc. Aby uzyskać więcej informacji o dowolnym miejscu w odpowiedzi, możesz wysłać prośbę o szczegóły miejsca.

Wyszukiwanie tekstu jest inicjowane przez metodę PlacesService i textSearch().

service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);

Ta metoda przyjmuje żądanie z tymi polami:

  • query (wymagany) – ciąg tekstowy, na przykład: "restauracja" &"123 Main Street". Musi to być nazwa, adres lub kategoria miejsca. Inne typy danych wejściowych mogą powodować błędy i nie mogą zagwarantować prawidłowych wyników. Usługa Places będzie zwracać dopasowania kandydatów na podstawie tego ciągu i uporządkować wyniki na podstawie ich trafności. Ten parametr staje się opcjonalny, jeśli w żądaniu użyty jest również parametr type.
  • Opcjonalnie:
    • openNow – wartość logiczna wskazująca, że w chwili wysyłania zapytania usługa Miejsca powinna zwracać tylko te miejsca, które są otwarte. Miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane, jeśli podasz w swoim zapytaniu ten parametr. Ustawienie zasady openNow na false nie ma żadnego efektu.
    • minPriceLevel i maxPriceLevel – ogranicza wyniki tylko do tych miejsc w określonym przedziale cenowym. Akceptowane są wartości z zakresu od 0 (najtańsza) do 4 (najdroższa).
    • Może to być:
      • bounds – obiekt google.maps.LatLngBounds definiujący prostokąt, w którym zostanie przeprowadzone wyszukiwanie;
      • location i radius – możesz wskazać wyniki dla określonego okręgu, przekazując parametr location i radius. Spowoduje to, że usługa Miejsca będzie wolała wyświetlać wyniki w tym okręgu. Wyniki spoza zdefiniowanego obszaru mogą być nadal wyświetlane. Lokalizacja przyjmuje obiekt google.maps.LatLng, a promień wyznacza prostą liczbę całkowitą, która określa 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 podać tylko jeden typ (jeśli podasz więcej niż jeden typ, wszystkie pozostałe po pierwszym będą ignorowane). Zobacz listę obsługiwanych typów.

Musisz też przekazać metodę wywołania zwrotnego do textSearch(), 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 wyszukiwanie

Kody stanu

Obiekt odpowiedzi PlacesServiceStatus zawiera stan żądania i może zawierać dane debugowania, które ułatwiają wykrycie, dlaczego żądanie miejsca się nie powiodło. 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 internetowa nie może korzystać z usługi PlacesService.
  • UNKNOWN_ERROR: nie udało się przetworzyć żądania Miejsc Google z powodu błędu serwera. Żądanie może się udać, jeśli spróbujesz ponownie.
  • ZERO_RESULTS: nie znaleziono wyników dla tego żądania.

Wyniki wyszukiwania miejsca

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łalności miejsca, jeśli jest to firma. Może zawierać jedną z tych wartości:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Jeśli dane nie istnieją, business_statusnie zostanie zwrócony.
  • formatted_address to ciąg znaków zawierający adres tego miejsca czytelny dla ludzi. Właściwość formatted_address jest zwracana tylko w przypadku wyszukiwania tekstu.

    Często jest to odpowiednik adresu pocztowego. Niektóre kraje, np. Wielka Brytania, nie zezwalają na dystrybucję prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.

    Sformatowany adres składa się logicznie z co najmniej 1 komponentu adresu. Na przykład adres &111 8th Avenue, Nowy Jork, NY" (numer domu), "8th Avenue" (trasa) "New York" (miasto) oraz "NY" (USA).

    Nie interpretuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych komponentów adresu, które wraz z sformatowanym polem adresu zawierają odpowiedź interfejsu API.

  • geometry: informacje dotyczące geometrii danego miejsca. Obejmuje to:
    • location podaje szerokość i długość geograficzną miejsca.
    • W tym miejscu viewport wskazuje preferowany widoczny obszar na mapie.
  • permanently_closed (wycofane) to flaga logiczna wskazująca, czy miejsce zostało zamknięte na stałe lub tymczasowo (wartość true). Nie używaj właściwości permanently_closed. Zamiast tego użyj business_status, aby sprawdzić stan działalności.
  • plus_code (zobacz Otwórz kod lokalizacji i kody Plus Code) to zakodowane odwołanie do lokalizacji, określane na podstawie szerokości i długości geograficznej, które odpowiada obszarowi: 1/8000 stopnia na 1/8000. Kody Plus Code mogą służyć do zastępowania adresów w miejscach, w których nie istnieją (miejsc, w których budynki nie mają numerów lub nie mają nazw).

    Kod Plus Code jest sformatowany jako kod globalny i 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 znaków kodu lokalnego z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj treści automatycznie.
    Zwykle zwracane są zarówno kod globalny, jak i kod złożony. Jeśli jednak wynik znajduje się w odległej lokalizacji (np. na oceanie lub na pustyni), może zostać zwrócony tylko kod globalny.
  • html_attributions: tablica atrybucji, które powinny być wyświetlane podczas wyświetlania wyników wyszukiwania. Każdy wpis w tablicy zawiera tekst HTML pojedynczego atrybucji. Uwaga: jest to suma wszystkich atrybucji dla całej odpowiedzi wyszukiwania. Wszystkie obiekty PlaceResult w odpowiedzi zawierają więc identyczne listy atrybucji.
  • icon zwraca URL kolorowej ikony PNG o wymiarach 71 x 71 pikseli.
  • icon_mask_base_uri zwraca podstawowy URL w przypadku ikony bez koloru, pomniejszonej o rozszerzenie .svg lub .png.
  • icon_background_color zwraca domyślny kod koloru w formacie szesnastkowym dla kategorii miejsca.
  • name: nazwa miejsca.
  • opening_hours może zawierać te informacje:
    • open_now to wartość logiczna, która wskazuje, czy miejsce jest obecnie otwarte (wycofane w bibliotece Miejsc Google, Maps JavaScript API, użyj utc_offset_minutes).
  • place_id to identyfikator tekstowy, który jednoznacznie identyfikuje miejsce. Aby pobrać informacje o tym miejscu, przekaż ten identyfikator w żądaniu informacji o miejscu. Dowiedz się więcej o wskazaniu miejsca za pomocą identyfikatora miejsca.
  • Ocenia miejsce rating na podstawie zbiorczych opinii użytkowników w zakresie od 0, 0 do 5, 0.
  • types Tablica typów tego miejsca (np. ["political", "locality"] lub ["restaurant", "lodging"]. Tablica może zawierać wiele wartości lub być pusta. Nowe wartości można wprowadzać bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.
  • vicinity: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i lokalizację, ale nie prowincja/stan, kod pocztowy ani kraj. Na przykład biuro firmy Sydney w Australii ma wartość vicinity5/48 Pirrama Road, Pyrmont.

Dostęp do dodatkowych wyników

Domyślnie każde wyszukiwanie miejsc zwraca do 20 wyników na zapytanie. Każde wyszukiwanie może jednak zwrócić maksymalnie 60 wyników podzielonych na 3 strony. Dodatkowe strony są dostępne w obiekcie 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 dostępna jest dodatkowa strona wyników.
  • nextPage() funkcja, która zwróci następny zestaw wyników. Po przeprowadzeniu wyszukiwania musisz odczekać 2 sekundy, zanim będzie dostępna kolejna strona wyników.

Aby wyświetlić kolejny zestaw wyników, zadzwoń do: nextPage. Zanim wyświetlisz następną stronę wyników, musisz wyświetlić każdą stronę z wynikami. Każde wyszukiwanie liczy się jako jedno żądanie i limity wykorzystania.

Poniższy przykład pokazuje, jak zmienić funkcję wywołania zwrotnego, aby przechwytywać obiekt PlaceSearchPagination, co umożliwia 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;
Zobacz przykład

Fragment

Szczegóły miejsc

Oprócz podawania listy miejsc na danym obszarze usługa Miejsca może też zwracać szczegółowe informacje o konkretnym miejscu. Po zwróceniu miejsca w odpowiedzi na to zapytanie możesz użyć jego identyfikatora miejsca, aby poprosić o dodatkowe informacje o nim, takie jak pełny adres, numer telefonu, oceny użytkowników czy opinie.

Prośby o szczegóły miejsca

Żądane szczegóły miejsca są wywoływane za pomocą metody getDetails() usługi.

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

Ta metoda przyjmuje żądanie zawierające żądanie placeId miejsca i pola wskazujące, które typy danych miejsc mają zostać zwrócone. Dowiedz się więcej o tym, jak odwołać się do miejsca za pomocą identyfikatora miejsca.

Przyjmuje też metodę wywołania zwrotnego, który 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);
  }
}

Zobacz przykład

Pola (szczegóły miejsc)

Parametr fields przyjmuje tablicę ciągów (nazwy pól).

Użyj parametru fields, aby określić tablicę typów danych o miejscach do zwrócenia. Na przykład: fields: ['address_component', 'opening_hours', 'geometry']. Przy określaniu wartości złożonych użyj kropki. Na przykład: opening_hours.weekday_text.

Pola odpowiadają wynikom szczegółów miejsca i są podzielone na trzy kategorie płatności: Podstawowe, Kontakty i Atmosfera. Pola podstawowe są rozliczane według stawki podstawowej i nie ponoszą żadnych dodatkowych opłat. Koszty w polach kontaktu i atmosfery są wyższe. Więcej informacji znajdziesz w arkuszu cenowym. Atrybucja (html_attributions) jest zawsze zwracana przy każdym połączeniu, niezależnie od tego, czy została wysłana.

Podstawowe

Kategoria podstawowa obejmuje te pola:
address_component, 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 interfejs API, {20 Maps}

Kontakt

Kategoria Kontakty obejmuje te pola:
formatted_phone_number, international_phone_number, opening_hours, website

Klimat

Kategoria Atmosfera obejmuje te pola: price_level, rating, review, user_ratings_total

Więcej informacji o polach miejsc Więcej informacji o naliczaniu opłat za żądania danych o miejscach znajdziesz w artykule Użycie i płatności.

Odpowiedzi na pytania o miejsce

Kody stanu

Obiekt odpowiedzi PlacesServiceStatus zawiera stan żądania i może zawierać dane debugowania, które ułatwiają wykrycie, dlaczego żądanie miejsca nie powiodło się. 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 Podana lokalizacja nie została znaleziona w bazie danych Miejsc.
  • REQUEST_DENIED: strona internetowa nie może korzystać z usługi PlacesService.
  • UNKNOWN_ERROR: nie udało się przetworzyć żądania Miejsc Google z powodu błędu serwera. Żądanie może się udać, jeśli spróbujesz ponownie.
  • ZERO_RESULTS: nie znaleziono wyników dla tego żądania.

Wyniki wyszukiwania miejsc

Udane wywołanie getDetails() zwraca obiekt PlaceResult z tymi właściwościami:

  • address_components: tablica z oddzielnymi komponentami dla tego adresu.

    Każdy komponent adresu zawiera zwykle następujące pola:

    • types[] to tablica wskazująca typ komponentu adresu. Zobacz listę obsługiwanych typów.
    • long_name to pełny opis lub nazwa komponentu adresu zwróconego przez geokoder.
    • short_name to skrócona nazwa tekstowa komponentu adresu (jeśli jest dostępna). Na przykład komponent adresu w stanie Alaska może zawierać ciąg long_name "Alaska & short_name &&tt;AK" z 2-literowym skrótem pocztowym.

    Weź pod uwagę te fakty o tablicy address_components[]:

    • Tablica komponentów adresu może zawierać więcej komponentów niż formatted_address.
    • Tablica nie musi zawierać wszystkich jednostek politycznych zawierających adres (oprócz tych z pola formatted_address). Aby pobrać wszystkie jednostki polityczne zawierające określony adres, użyj odwrotnego geokodowania, podając w żądaniu parametr szerokości i długości geograficznej adresu.
    • Format odpowiedzi nie jest gwarantowany w tych samych żądaniach. W szczególności liczba address_components różni się w zależności od żądanego adresu i może się zmieniać w miarę upływu czasu dla tego samego adresu. Komponent może zmieniać pozycję w tablicy. Typ komponentu może się zmieniać. Brak odpowiedzi w konkretnym komponentie.
  • business_status wskazuje stan działalności miejsca, jeśli jest to firma. Może zawierać jedną z tych wartości:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Jeśli dane nie istnieją, business_statusnie zostanie zwrócony.
  • formatted_address: czytelny dla człowieka adres tego miejsca.

    Często jest to odpowiednik adresu pocztowego. Niektóre kraje, np. Wielka Brytania, nie zezwalają na dystrybucję prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.

    Sformatowany adres składa się logicznie z co najmniej 1 komponentu adresu. Na przykład adres &111 8th Avenue, Nowy Jork, NY" (numer domu), "8th Avenue" (trasa) "New York" (miasto) oraz "NY" (USA).

    Nie interpretuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych komponentów adresu, które wraz z sformatowanym polem adresu zawierają odpowiedź interfejsu API.

  • formatted_phone_number: numer telefonu miejsca w formacie zgodnym z konwencją regionalną.
  • geometry: informacje dotyczące geometrii danego miejsca. Obejmuje to:
    • location podaje szerokość i długość geograficzną miejsca.
    • W tym miejscu viewport wskazuje preferowany widoczny obszar na mapie.
  • permanently_closed (wycofane) to flaga logiczna wskazująca, czy miejsce zostało zamknięte na stałe lub tymczasowo (wartość true). Nie używaj właściwości permanently_closed. Zamiast tego użyj business_status, aby sprawdzić stan działalności.
  • plus_code (zobacz Otwórz kod lokalizacji i kody Plus Code) to zakodowane odwołanie do lokalizacji, określane na podstawie szerokości i długości geograficznej, które odpowiada obszarowi: 1/8000 stopnia na 1/8000. Kody Plus Code mogą służyć do zastępowania adresów w miejscach, w których nie istnieją (miejsc, w których budynki nie mają numerów lub nie mają nazw).

    Kod Plus Code jest sformatowany jako kod globalny i 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 znaków kodu lokalnego z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj treści automatycznie.
    Zwykle zwracane są zarówno kod globalny, jak i kod złożony. Jeśli jednak wynik znajduje się w odległej lokalizacji (np. na oceanie lub na pustyni), może zostać zwrócony tylko kod globalny.
  • html_attributions: tekst atrybucji wyświetlany dla tego wyniku wyszukiwania.
  • icon: adres URL zasobu graficznego, którego można użyć do reprezentowania tego typu miejsca.
  • international_phone_number zawiera numer telefonu danego miejsca w formacie międzynarodowym. Format międzynarodowy zawiera kod kraju i jest poprzedzony znakiem plusa (+). Na przykład international_phone_number w przypadku firmy Google w Australii to +61 2 9374 4000.
  • name: nazwa miejsca.
  • utc_offset Wycofano w Bibliotece miejsc i interfejsie Maps JavaScript API. Zamiast tego użyj utc_offset_minutes.
  • Wartość w polu utc_offset_minutes wskazuje, ile minut w danym miejscu jest przesunięcia od czasu UTC. Na przykład w przypadku miejsc w Australii w czasie letnim czas letni to 660 (+11 godzin od czasu UTC), a w przypadku miejsc w Kalifornii bez czasu letniego –480.
  • opening_hours zawiera te informacje:
    • open_now (Wycofany w bibliotece Miejsc Google, Maps JavaScript API; zamiast tego użyj funkcji opening_hours.isOpen(). Obejrzyj ten film, aby dowiedzieć się, jak korzystać z funkcji isOpen ze szczegółami miejsca). to wartość logiczna wskazująca, czy miejsce jest obecnie otwarte.
    • periods[] to tablica okresów otwarcia obejmujących 7 dni, począwszy od niedzieli, w kolejności chronologicznej. Każdy okres obejmuje:
      • Pole open zawiera parę dni i godzin, które opisują moment otwarcia miejsca:
        • day liczbę z zakresu 0–6 odpowiadającą dniom tygodnia, począwszy od niedzieli. Na przykład 2 oznacza wtorek.
        • time może zawierać porę dnia w formacie 24 godzin ggmm (wartości należą do zakresu od 0000 do 2359). Wartość w polu time będzie podawana w strefie czasowej tego miejsca.
      • close może zawierać pary obiektów dnia i godziny opisujące, kiedy miejsce jest zamknięte. Uwaga: jeśli miejsce jest zawsze otwarte, w odpowiedzi nie będzie sekcji close. Możesz polegać na tym, że aplikacje zawsze są reprezentowane jako okres open zawierający day z wartością 0 i time o wartości 0000, a nie close.
    • weekday_text to tablica 7 ciągów reprezentujących sformatowane godziny otwarcia w poszczególnych dniach tygodnia. Jeśli w żądaniu miejsca został podany parametr language, usługa Miejsca odpowiednio sformatuje i zlokalizuje godziny otwarcia w danym języku. Kolejność elementów w tej tablicy zależy od parametru language. Niektóre języki rozpoczynają tydzień w poniedziałek, a w niedzielę.
  • permanently_closed (wycofane) to flaga logiczna wskazująca, czy miejsce zostało zamknięte na stałe lub tymczasowo (wartość true). Nie używaj właściwości permanently_closed. Zamiast tego użyj business_status, aby sprawdzić stan działalności.
  • photos[]: tablica obiektów PlacePhoto. Aby uzyskać zdjęcie, korzystając z metody getUrl(), możesz użyć właściwości PlacePhoto lub sprawdzić obiekt pod kątem wartości:
    • height: maksymalna wysokość obrazu w pikselach.
    • width: maksymalna szerokość obrazu w pikselach.
    • html_attributions: tekst atrybucji, 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 nim za pomocą żądania informacji o miejscu. Dowiedz się więcej o wskazaniu miejsca za pomocą identyfikatora miejsca.
  • rating: ocena miejsca, od 0,0 do 5,0, na podstawie zagregowanych opinii użytkowników.
  • reviews tablica do maksymalnie 5 opinii. Każda opinia składa się z kilku komponentów:
    • aspects[] zawiera tablicę obiektów PlaceAspectRating, z których każdy ma ocenę pojedynczego atrybutu instytucji. Pierwszy obiekt w tablicy jest uważany za główny aspekt. Każdy PlaceAspectRating jest zdefiniowany jako:
      • type nazwa elementu, który ma być oceniany; Obsługiwane są te typy: appeal, atmosphere, decor, facilities, food, overall, quality i service.
      • rating ocenę tego konkretnego elementu (od 0 do 3).
    • author_name nazwa użytkownika, który przesłał opinię. Anonimowe opinie są przypisywane do użytkownika Google. Jeśli ustawiono parametr języka, wyrażenie „użytkownik Google” zwróci zlokalizowany ciąg.
    • author_url adres URL profilu Google+ użytkownika (jeśli jest dostępny).
    • language Kod języka IETF wskazujący język używany w opinii użytkownika. To pole zawiera tylko tag języka głównego, a nie dodatkowy tag wskazujący kraj lub region. Na przykład wszystkie angielskie opinie są oznaczone tagiem 'pl' a nie
    • rating ogólna ocena tego miejsca dla użytkownika. Jest to liczba całkowita z zakresu od 1 do 5.
    • text opinii użytkownika. W przypadku opinii o miejscu w Miejscach Google opinie tekstowe są uznawane za opcjonalne, dlatego to pole może być puste.
  • types Tablica typów tego miejsca (np. ["political", "locality"] lub ["restaurant", "lodging"]. Tablica może zawierać wiele wartości lub być pusta. Nowe wartości można wprowadzać bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.
  • url: URL oficjalnej strony Google dotyczącej tego miejsca. Jest to strona należąca do Google, która zawiera najlepsze dostępne informacje o tym miejscu. Aplikacje muszą zawierać linki lub umieszczać tę stronę na dowolnym ekranie z dokładnymi wynikami wyszukiwania miejsca.
  • vicinity: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i lokalizację, ale nie prowincja/stan, kod pocztowy ani kraj. Na przykład biuro firmy Sydney w Australii ma wartość vicinity5/48 Pirrama Road, Pyrmont. Właściwość vicinity jest zwracana tylko w przypadku wyszukiwania w pobliżu.
  • website wyświetla wiarygodne strony, np. stronę główną firmy.

Uwaga: oceny wielowymiarowe mogą nie być dostępne we wszystkich lokalizacjach. Jeśli jest ich zbyt mało, w odpowiedzi na szczegóły znajdziesz starszą wersję ocen w skali od 0,0 do 5,0 (jeśli jest dostępna) lub całkowicie zabraknie ocen.

Odwoływanie się do miejsca z identyfikatorem miejsca

Identyfikator miejsca to niepowtarzalne odwołanie do 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żywać identyfikatora miejsca w aplikacji, musisz najpierw wyszukać identyfikator, który jest dostępny w PlaceResult żądania wyszukiwania miejsc lub szczegółów miejsca. Możesz użyć tego identyfikatora, aby wyszukać szczegóły miejsca.

Identyfikatory miejsc są zwolnione z ograniczeń dotyczących pamięci podręcznej opisanych w sekcji 3.2.3(a) Warunków korzystania z Google Maps Platform. Dlatego 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

Umieszczanie zdjęć w witrynie pozwala dodawać do witryny wysokiej jakości treści fotograficzne. Usługa Zdjęcia daje dostęp do milionów zdjęć przechowywanych w bazie danych Miejsc i Google+ Lokalnie. Gdy uzyskasz informacje o miejscach za pomocą prośby o dane miejsca, w odpowiedzi na zdjęcia będą wyświetlane odniesienia do zdjęć. Zapytania dotyczące wyszukiwania w pobliżu i wyszukiwania tekstu zwracają w razie potrzeby również odwołanie do jednego miejsca w przypadku danego zdjęcia. Usługa zdjęć pozwala uzyskać dostęp do wymienionych zdjęć i zmienić rozmiar zdjęcia w optymalny sposób.

Tablica obiektów PlacePhoto zostanie zwrócona w ramach obiektu PlaceResult dla każdego żądania getDetails(), textSearch() lub nearbySearch() wysłanego do PlacesService.

Uwaga: liczba zwróconych zdjęć różni się w zależności od żądania.

  • Wyszukiwanie w pobliżu lub wyszukiwanie tekstowe zwróci maksymalnie jeden obiekt PlacePhoto.
  • Żądanie Szczegóły zwróci maksymalnie 10 obiektów PlacePhoto.

Aby poprosić o adres URL powiązanego obrazu, wywołaj metodę PlacePhoto.getUrl() i przekaż prawidłowy obiekt PhotoOptions. Obiekt PhotoOptions pozwala określić maksymalną żądaną wysokość i szerokość obrazu. Jeśli określisz wartości zarówno dla maxHeight, jak i maxWidth, usługa fotograficzna zmieni rozmiar obrazu na mniejszy od obu rozmiarów, zachowując pierwotny współczynnik proporcji.

Następujący fragment kodu akceptuje obiekt i dodaje znacznik do mapy, jeśli zdjęcie istnieje. Domyślny obraz znacznika jest zastępowany niewielką 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, np. od właścicieli firm i zdjęć przesłanych przez użytkowników. W większości przypadków tych zdjęć można użyć bez oznaczenia lub w celu dodania ich jako autora. Jeśli jednak zwrócony element photo zawiera wartość w polu html_attributions, musisz wyświetlać dodatkową atrybucję w swojej aplikacji wszędzie tam, gdzie wyświetlasz obraz.