biblioteka Miejsc

Opis

Funkcje dostępne w bibliotece miejsc oraz interfejsie Maps JavaScript API umożliwiają aplikacji wyszukiwanie miejsc (zdefiniowanych w tym interfejsie API jako instytucje, lokalizacje geograficzne lub ważne ciekawe miejsca) znajdujących się na zdefiniowanym obszarze, np. na granicach mapy lub wokół stałego punktu.

Interfejs Places API udostępnia funkcję autouzupełniania, dzięki której aplikacje mogą korzystać z funkcji autouzupełniania w polu wyszukiwania Map Google. Gdy użytkownik zacznie wpisywać adres, autouzupełnianie uzupełni resztę. Więcej informacji znajdziesz w dokumentacji autouzupełniania.

Pierwsze kroki

Jeśli nie masz doświadczenia z interfejsem Maps JavaScript API lub z JavaScriptem, zalecamy zapoznanie się z językiem JavaScript i uzyskaniem klucza interfejsu API, zanim rozpoczniesz.

Włącz interfejsy API

Zanim użyjesz biblioteki Miejsc w interfejsie Maps JavaScript API, upewnij się, że interfejs Places API jest włączony w Google Cloud Console w tym samym projekcie, który został skonfigurowany na potrzeby Maps JavaScript API.

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

  1. Otwórz konsolę Google Cloud.
  2. Kliknij przycisk Wybierz projekt, a następnie wybierz projekt skonfigurowany na potrzeby interfejsu Maps JavaScript API i kliknij Otwórz.
  3. Na liście interfejsów API w panelu znajdź Places API.
  4. 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:
    1. U góry strony wybierz WŁĄCZ INTERFEJSY API I USŁUGI, aby wyświetlić kartę Biblioteka. Możesz też wybrać Biblioteka w menu po lewej stronie.
    2. Wyszukaj interfejs 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 jest samodzielną biblioteką, niezależną od głównego kodu interfejsu Maps JavaScript API. Aby korzystać z funkcji dostępnych w tej bibliotece, musisz ją najpierw wczytać za pomocą parametru libraries w adresie URL wczytywania interfejsu API Map Google:

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>

Więcej informacji znajdziesz w artykule Omówienie bibliotek.

Dodawanie interfejsu Places API do listy ograniczeń interfejsu API klucza interfejsu API

Zastosowanie ograniczeń interfejsu API do kluczy ogranicza możliwość wykorzystania klucza interfejsu API do co najmniej 1 interfejsu API lub pakietu SDK. Żądania do interfejsu API lub pakietu SDK powiązane z kluczem interfejsu API będą przetwarzane. Żądania wysyłane do interfejsu API lub pakietu SDK niepowiązane z kluczem API zakończą się niepowodzeniem. Aby ograniczyć użycie klucza interfejsu API w bibliotece Miejsc, Maps JavaScript API:
  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 > Dane logowania.
  4. Na stronie Dane logowania kliknij nazwę klucza interfejsu API, który chcesz zabezpieczyć.
  5. Na stronie Ogranicz klucz interfejsu API i zmień jego nazwę ustaw ograniczenia:
    • Ograniczenia interfejsów API
      • Wybierz Ogranicz klucz.
      • Kliknij Wybierz interfejsy API i zaznacz opcje Map JavaScript API oraz Places API.
        (Jeśli któregoś z interfejsów API nie ma na liście, musisz go enable).
  6. Kliknij ZAPISZ.

Limity i zasady dotyczące wykorzystania

Limity

Biblioteka miejsc współdzieli limit wykorzystania z interfejsem Places API zgodnie z opisem w dokumentacji dotyczącej limitów wykorzystania interfejsu Places API.

Zasady

Korzystanie z biblioteki Miejsc Google Maps JavaScript API musi być zgodne z zasadami dotyczącymi interfejsu Places API.

Wyszukiwania miejsc

Usługa Miejsca umożliwia wyszukiwanie następujących typów:

Wyświetlane informacje mogą obejmować instytucje – takie jak restauracje, sklepy i biura – oraz wyniki geokodu, które wskazują adresy, obszary polityczne, takie jak miasta i miasta, oraz inne ciekawe miejsca.

Znajdowanie próśb o miejsce

Żądanie Znajdź miejsce pozwala wyszukać miejsce według zapytania tekstowego lub numeru telefonu. Istnieją 2 rodzaje próśb o znalezienie miejsca:

Znajdź miejsce na podstawie zapytania

Funkcja Znajdź miejsce z zapytania wymaga podania tekstu i zwraca miejsce. Może to być dowolny rodzaj danych o miejscu, np. nazwa firmy lub adres. Aby utworzyć funkcję Znajdź miejsce z żądania zapytania, wywołaj metodę findPlaceFromQuery() obiektu PlacesService, która pobiera te parametry:

  • query (wymagany) Ciąg tekstowy, który ma zostać wyszukany, np. „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria obiektu. Wszystkie inne typy danych wejściowych mogą generować błędy i nie możemy zagwarantować, że zwrócą prawidłowe wyniki. Interfejs Places API zwróci dopasowania kandydujące na podstawie tego ciągu i porządkuje wyniki na podstawie ich postrzeganej trafności.
  • fields (wymagany) Co najmniej jedno pole określające typy danych dotyczących miejsca do zwrócenia.
  • locationBias (opcjonalnie) Współrzędne określające obszar wyszukiwania. Może to być jedna z tych wartości:
    • Zbiór współrzędnych szerokości i długości geograficznej określonych jako LatLngLiteral lub obiekt LatLng
    • Prostokątne granice (2 pary szerokości i długości lub obiekt LatLngBounds)
    • Promień (w metrach) wyśrodkowany na szerokości/długości geograficznej

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

Poniższy przykład przedstawia wywołanie findPlaceFromQuery() o wyszukiwaniu „Muzeum Sztuki Współczesnej Australia” i uwzględnieniem pól name i geometry.

var map;
var service;
var infowindow;

function initMap() {
  var sydney = new google.maps.LatLng(-33.867, 151.195);

  infowindow = new google.maps.InfoWindow();

  map = new google.maps.Map(
      document.getElementById('map'), {center: sydney, zoom: 15});

  var request = {
    query: 'Museum of Contemporary Art Australia',
    fields: ['name', 'geometry'],
  };

  var service = new google.maps.places.PlacesService(map);

  service.findPlaceFromQuery(request, function(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
      map.setCenter(results[0].geometry.location);
    }
  });
}
Zobacz przykład

Znajdź miejsce na podstawie numeru telefonu

Funkcja Znajdź miejsce na podstawie numeru telefonu pobiera numer telefonu i zwraca miejsce. Aby utworzyć żądanie Znajdź miejsce na podstawie numeru telefonu, wywołaj metodę findPlaceFromPhoneNumber() funkcji PlacesService, która pobiera te parametry:

  • phoneNumber (wymagany) Numer telefonu w formacie E.164.
  • fields (wymagany) Co najmniej jedno pole określające typy danych dotyczących miejsca do zwrócenia.
  • locationBias (opcjonalnie) – współrzędne definiujące obszar wyszukiwania. Może to być:
    • Zbiór współrzędnych szerokości i długości geograficznej określonych jako LatLngLiteral lub obiekt LatLng
    • Prostokątne granice (cztery punkty długości/szerokości geograficznej lub obiekt LatLngBounds)
    • Promień (w metrach) wyśrodkowany na szerokości/długości geograficznej

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

Pola (Znajdź metody związane z miejscem)

Parametr fields służy do określania tablicy typów danych dotyczących miejsc do zwrócenia. Na przykład: fields: ['formatted_address', 'opening_hours', 'geometry']. Przy określaniu wartości złożonych użyj kropki. Na przykład: opening_hours.weekday_text.

Pola odpowiadają wynikom wyszukiwania miejsc i są podzielone na 3 kategorie rozliczeń: Podstawowa, Kontakt oraz Atmosfera. Płatności za pola podstawowe są naliczane według stawki podstawowej i nie powodują naliczenia żadnych dodatkowych opłat. Pola kontaktu i atmosfery są rozliczane według wyższej stawki. Więcej informacji znajdziesz w cenniku. Atrybucje (html_attributions) są zawsze zwracane przy każdym wywołaniu, niezależnie od tego, czy zażądano zawartości pola.

Podstawowe

Kategoria Podstawowa zawiera te pola:
business_status, formatted_address, geometry, icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (wycofane), photos, place_id, plus_code, types

Nawiązanie kontaktu,

Kategoria Kontakt zawiera następujące pole: opening_hours
(wycofane z Biblioteki miejsc, Maps JavaScript API. użyj prośby o szczegóły miejsca, aby uzyskać wyniki (opening_hours).

Atmosfera

Kategoria atmosfery zawiera te pola: price_level, rating, user_ratings_total

Metody findPlaceFromQuery() i findPlaceFromPhoneNumber() korzystają z tego samego zestawu pól i mogą zwracać te same pola w odpowiedziach.

Ustawianie odchyleń od lokalizacji (znajdowanie metod związanych z miejscem)

Użyj parametru locationBias, aby uzyskać wyniki dotyczące funkcji Znajdź miejsce dla danego obszaru. locationBias możesz ustawić na te sposoby:

Uprzedzenia w określonym obszarze:

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

Zdefiniuj prostokątny obszar do wyszukiwania:

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

Możesz też użyć właściwości LatLngBounds.

Zdefiniuj promień wyszukiwania (w metrach) wyśrodkowany na konkretnym obszarze:

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

Żądania wyszukiwania w pobliżu

Wyszukiwanie w pobliżu umożliwia wyszukiwanie miejsc na określonym obszarze według słowa kluczowego lub typu. Wyszukiwanie w pobliżu musi zawsze obejmować lokalizację, którą można określić na 2 sposoby:

  • LatLngBounds.
  • pole koliste zdefiniowane jako połączenie właściwości location – czyli środek okręgu, który wskazuje środek okręgu jako obiekt LatLng – i promień mierzony w metrach.

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

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

Ta metoda pobiera żądanie z tymi polami:

  • Jeden z tych warunków:
    • bounds, który musi być obiektem google.maps.LatLngBounds definiującym prostokątny obszar wyszukiwania, lub
    • location i radius. W drugim jest dostępny obiekt google.maps.LatLng, a drugi to prosta liczba całkowita określająca promień okręgu w metrach. Maksymalny dozwolony promień to 50 000 metrów. Pamiętaj, że gdy rankBy ma wartość DISTANCE, musisz określić location, ale nie możesz określić wartości radius ani bounds.
  • keyword (opcjonalny) – hasło, które ma zostać dopasowane do wszystkich dostępnych pól, w tym między innymi imienia i nazwiska, typu i adresu, a także opinii klientów i innych treści firm zewnętrznych.
  • minPriceLevel i maxPriceLevel (opcjonalne) – ogranicza wyniki tylko do tych miejsc w określonym zakresie. Prawidłowe wartości mieszczą się w zakresie od 0 (najbardziej korzystna cena) do 4 (najdroższa) włącznie.
  • name Wycofano. Odpowiednik: keyword. Wartości w tym polu są łączone z wartościami w polu keyword i przekazywane jako część tego samego ciągu wyszukiwania.
  • openNow (opcjonalny) – wartość logiczna wskazująca, że usługa Miejsca powinna zwracać tylko te miejsca, które są otwarte w momencie wysyłania zapytania. Jeśli w zapytaniu uwzględnisz ten parametr, miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane. Ustawienie opcji openNow na false nie powoduje żadnego efektu.
  • rankBy (opcjonalny) – określa kolejność, w jakiej wyświetlane są wyniki. Możliwe wartości:
    • google.maps.places.RankBy.PROMINENCE (domyślnie). Ta opcja umożliwia sortowanie wyników na podstawie ich ważności. Miejsca w określonym promieniu w rankingu będą faworyzowane przez pasujące, ale mniej widoczne miejsca. Na widoczność mają wpływ pozycja miejsca w indeksie Google, popularność globalna i inne czynniki. Jeśli podasz google.maps.places.RankBy.PROMINENCE, parametr radius jest wymagany.
    • google.maps.places.RankBy.DISTANCE. Ta opcja powoduje sortowanie wyników w kolejności rosnącej według odległości od określonego elementu location (wymagane). Pamiętaj, że jeśli podasz RankBy.DISTANCE, nie możesz określić niestandardowych właściwości bounds ani radius. Jeśli podasz RankBy.DISTANCE, wymagany jest co najmniej 1 z tych elementów: keyword, name lub type.
  • type – ogranicza wyniki do miejsc pasujących do określonego typu. Można określić tylko 1 typ (jeśli podasz więcej niż 1 typ, wszystkie typy po pierwszej pozycji będą ignorowane). Zobacz listę obsługiwanych typów.

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

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    type: ['restaurant']
  };

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

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

Zobacz przykład

Żądania wyszukiwania tekstowego

Usługa wyszukiwania tekstu w Miejscach Google to usługa internetowa, która zwraca informacje o zestawie miejsc na podstawie ciągu znaków, na przykład „pizza w Krakowie” lub „sklepy obuwnicze w pobliżu Ottawy”. W odpowiedzi usługa przesyła listę miejsc pasujących do ciągu tekstowego i ustawione odchylenie do lokalizacji. Odpowiedź wyszukiwania będzie zawierać listę miejsc. Możesz wysłać prośbę o szczegóły miejsca, aby uzyskać więcej informacji o dowolnym miejscu w odpowiedzi.

Wyszukiwanie tekstu rozpoczyna się od wywołania metody textSearch() obiektu PlacesService.

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

Ta metoda pobiera żądanie z tymi polami:

  • query (wymagany) – ciąg znaków, który ma zostać wyszukany, na przykład „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria obiektu. Inne typy danych wejściowych mogą generować błędy i nie możemy zagwarantować, że zwrócą prawidłowe wyniki. Usługa Miejsca zwraca dopasowania kandydujące na podstawie tego ciągu i uporządkuje wyniki na podstawie ich postrzeganej trafności. Ten parametr staje się opcjonalny, jeśli parametr type jest też używany w żądaniu wyszukiwania.
  • Opcjonalnie:
    • openNow – wartość logiczna wskazująca, że usługa Miejsca powinna zwracać tylko te miejsca, które w momencie wysyłania zapytania są otwarte. Jeśli w zapytaniu uwzględnisz ten parametr, miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane. Ustawienie opcji openNow na false nie powoduje żadnego efektu.
    • minPriceLevel i maxPriceLevel – ogranicza wyniki tylko do tych miejsc w ramach określonego poziomu cenowego. Prawidłowe wartości mieszczą się w zakresie od 0 (najdroższa cena) do 4 (najdroższa) włącznie.
    • Jeden z tych warunków:
      • bounds – obiekt google.maps.LatLngBounds definiujący prostokąt, w którym ma być przeprowadzone wyszukiwanie, lub
      • a location i radius – możesz upowszechniać wyniki do określonego kręgu, przekazując parametry location i radius. 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 obiekt google.maps.LatLng, a dla promienia podana jest prosta liczba całkowita określająca promień okręgu w metrach. Maksymalny dozwolony promień to 50 000 metrów.
    • type – ogranicza wyniki do miejsc pasujących do określonego typu. Można podać tylko 1 typ (jeśli podasz więcej niż 1 typ, wszystkie typy kolejne będą ignorowane). Zobacz listę obsługiwanych typów.

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

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    query: 'restaurant'
  };

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

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}

Wyszukaj odpowiedzi

Kody stanu

Obiekt odpowiedzi PlacesServiceStatus zawiera stan żądania i może zawierać informacje o debugowaniu, które pomogą Ci określić, dlaczego nie udało się zrealizować prośby o dodanie miejsca. Możliwe wartości stanu:

  • INVALID_REQUEST: to żądanie było nieprawidłowe.
  • OK: odpowiedź zawiera prawidłowy wynik.
  • OVER_QUERY_LIMIT: strona przekroczyła limit żądań.
  • REQUEST_DENIED: strona nie może korzystać z usługi PlacesService.
  • UNKNOWN_ERROR: nie udało się przetworzyć żądania PlacesService z powodu błędu serwera. Jeśli spróbujesz ponownie, prośba może zostać zrealizowana.
  • ZERO_RESULTS: nie znaleziono żadnego wyniku dla tego żądania.

Wyniki wyszukiwania miejsc

Funkcje findPlace(), nearbySearch() i textSearch() zwracają tablicę obiektów PlaceResult.

Każdy obiekt PlaceResult może zawierać te właściwości:

  • business_status wskazuje stan operacyjny miejsca, jeśli jest to firma. Może zawierać jedną z tych wartości:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Jeśli dane nie istnieją, wartość business_status nie jest zwracana.
  • formatted_address to ciąg znaków zawierający czytelny dla człowieka adres tego miejsca. Właściwość formatted_address jest zwracana tylko w przypadku wyszukiwania tekstowego.

    Często jest to równoważny adres pocztowy. Pamiętaj, że w niektórych krajach (np. w Wielkiej Brytanii) nie można rozpowszechniać prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.

    Sformatowany adres logicznie składa się z co najmniej jednego komponentu adresu. Na przykład adres „111 8th Aleja, Nowy Jork, Nowy Jork” składa się z tych komponentów: „111” (numer domu), „8 Aleja” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).

    Nie analizuj sformatowanego adresu automatycznie. Zamiast tego należy używać poszczególnych komponentów adresu, które oprócz sformatowanego pola adresu zawierają odpowiedź interfejsu API.

  • geometry: informacje związane z geometrią miejsca. Obejmuje to m.in.:
    • location podaje szerokość i długość geograficzną miejsca.
    • viewport określa preferowany widoczny obszar na mapie podczas wyświetlania tego miejsca.
  • permanently_closed (wycofano) to flaga wartości logicznej, która wskazuje, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartość true). Nie używaj właściwości permanently_closed. Zamiast tego użyj narzędzia business_status, aby sprawdzić stan operacyjny firmy.
  • plus_code (zobacz Otwórz kod lokalizacji i kody plus) to zakodowane odniesienie do lokalizacji utworzone na podstawie współrzędnych geograficznych, które reprezentuje obszar: 1/8000 stopnia (około 14 m x 14 m na równiku) lub mniejszy. Kody plus mogą zastąpić adresy ulic w miejscach, w których one nie istnieją (gdzie budynki nie są ponumerowane lub ulice nie mają nazw).

    Kod plus jest sformatowany jako kod globalny i kod złożony:

    • global_code to czteroznakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).
    • compound_code to co najmniej 6-znakowy kod lokalny z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tych treści automatycznie.
    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 morzu lub pustyni), może zostać zwrócony tylko kod globalny.
  • html_attributions: tablica atrybucji, która powinna być wyświetlana przy wyświetlaniu wyników wyszukiwania. Każda pozycja w tablicy zawiera tekst HTML odpowiadający pojedynczemu pochodzeniu. Uwaga: jest to podsumowanie wszystkich informacji o atrybucji dotyczących całej odpowiedzi na wyszukiwanie. Oznacza to, że wszystkie obiekty PlaceResult w odpowiedzi zawierają identyczne listy atrybucji.
  • icon zwraca adres URL ikony PNG o wymiarach 71 x 71 pikseli.
  • icon_mask_base_uri zwraca podstawowy adres URL ikony bez koloru bez rozszerzenia .svg lub .png.
  • icon_background_color zwraca domyślny szesnastkowy kod koloru kategorii miejsca.
  • name: nazwa miejsca.
  • Plik opening_hours może zawierać te informacje:
    • open_now to wartość logiczna wskazująca, czy miejsce jest otwarte w bieżącej chwili (wycofano z Biblioteki miejsc, Maps JavaScript API; zamiast tego użyj parametru utc_offset_minutes).
  • place_id to identyfikator tekstowy, który jednoznacznie identyfikuje miejsce. Aby pobrać informacje o miejscu, przekaż ten identyfikator w żądaniu szczegółów miejsca. Dowiedz się więcej o tym, jak określić odwołanie do miejsca za pomocą identyfikatora miejsca.
  • rating zawiera ocenę miejsca w skali od 0,0 do 5,0, ustaloną na podstawie zagregowanych opinii użytkowników.
  • types Tablica typów dla tego miejsca (np. ["political", "locality"] lub ["restaurant", "lodging"]). Ta tablica może zawierać wiele wartości lub być pusta. Nowe wartości mogą zostać wprowadzone bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.
  • vicinity: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i rejon, ale nie województwo, kod pocztowy ani kraj. Na przykład biuro Google w Sydney w Australii ma wartość vicinity o wartości 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 pomocą obiektu PlaceSearchPagination. Aby uzyskać dostęp do dodatkowych stron, musisz przechwycić obiekt PlaceSearchPagination za pomocą funkcji wywołania zwrotnego. Obiekt PlaceSearchPagination jest zdefiniowany jako:

  • hasNextPage właściwość logicznej, która wskazuje, czy są dostępne dalsze wyniki. true, gdy pojawi się dodatkowa strona wyników.
  • nextPage() – funkcja, która zwróci następny zestaw wyników. Po wykonaniu wyszukiwania musisz odczekać 2 sekundy, zanim pojawi się następna strona wyników.

Aby zobaczyć następny zestaw wyników, wywołaj funkcję nextPage. Każda strona wyników musi zostać wyświetlona przed wyświetleniem kolejnej strony wyników. Pamiętaj, że każde wyszukiwanie jest liczone jako 1 żądanie w ramach limitów wykorzystania.

Przykład poniżej pokazuje, jak zmienić funkcję wywołania zwrotnego w taki sposób, aby przechwycić obiekt PlaceSearchPagination i umożliwić wysyłanie wielu żądań wyszukiwania.

TypeScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">

function initMap(): void {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: pyrmont,
      zoom: 17,
      mapId: "8d193001f940fde3",
    } as google.maps.MapOptions
  );

  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage: () => void | false;
  const moreButton = document.getElementById("more") as HTMLButtonElement;

  moreButton.onclick = function () {
    moreButton.disabled = true;

    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (
      results: google.maps.places.PlaceResult[] | null,
      status: google.maps.places.PlacesServiceStatus,
      pagination: google.maps.places.PlaceSearchPagination | null
    ) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;

      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    }
  );
}

function addPlaces(
  places: google.maps.places.PlaceResult[],
  map: google.maps.Map
) {
  const placesList = document.getElementById("places") as HTMLElement;

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon!,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name!,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name!;
      placesList.appendChild(li);

      li.addEventListener("click", () => {
        map.setCenter(place.geometry!.location!);
      });
    }
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
function initMap() {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(document.getElementById("map"), {
    center: pyrmont,
    zoom: 17,
    mapId: "8d193001f940fde3",
  });
  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage;
  const moreButton = document.getElementById("more");

  moreButton.onclick = function () {
    moreButton.disabled = true;
    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (results, status, pagination) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;
      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    },
  );
}

function addPlaces(places, map) {
  const placesList = document.getElementById("places");

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name;
      placesList.appendChild(li);
      li.addEventListener("click", () => {
        map.setCenter(place.geometry.location);
      });
    }
  }
}

window.initMap = initMap;
Zobacz przykład

Wypróbuj fragment

Szczegóły miejsc

Oprócz udostępnienia listy miejsc na danym obszarze usługa Miejsca może też zwracać szczegółowe informacje o konkretnym miejscu. Gdy miejsce zostanie zwrócone w odpowiedzi na wyszukiwanie miejsca, można użyć jego identyfikatora miejsca, aby przesłać prośbę o dodatkowe informacje na jego temat, np. pełny adres, numer telefonu, ocenę i opinie użytkowników itp.

Prośby o szczegóły dotyczące miejsca

Żądanie informacji o miejscu jest uzyskiwane za pomocą wywołania metody getDetails() usługi.

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

Ta metoda pobiera żądanie zawierające parametr placeId odpowiedniego miejsca i pola wskazujące, które typy danych o miejscach mają zostać zwrócone. Dowiedz się więcej o tym, jak określić odwołanie do miejsca za pomocą identyfikatora miejsca.

Korzysta też z metody wywołania zwrotnego, która musi obsługiwać kod stanu przekazany w odpowiedzi google.maps.places.PlacesServiceStatus, a także obiekt google.maps.places.PlaceResult.

var request = {
  placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',
  fields: ['name', 'rating', 'formatted_phone_number', 'geometry']
};

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

function callback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    createMarker(place);
  }
}

Zobacz przykład

Pola (szczegóły miejsca)

Parametr fields pobiera tablicę ciągów znaków (nazw pól).

Parametr fields służy do określania tablicy typów danych dotyczących miejsc do zwrócenia. Na przykład: fields: ['address_components', 'opening_hours', 'geometry']. Przy określaniu wartości złożonych użyj kropki. Na przykład: opening_hours.weekday_text.

Pola odpowiadają wynikom dotyczącym szczegółów miejsca i są podzielone na 3 kategorie rozliczeń: Podstawowa, Kontakt oraz Atmosfera. Pola podstawowe są rozliczane według stawki podstawowej i nie powodują dodatkowych opłat. Pola Kontakt i Atmosfera są rozliczane według wyższej stawki. Więcej informacji znajdziesz w cenniku. Atrybucje (html_attributions) są zawsze zwracane przy każdym wywołaniu, niezależnie od tego, czy żądanie zostało wysłane.

Podstawowe

Kategoria Podstawowa zawiera te pola:
address_components, adr_address, business_status, formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (wycofane), photo, place_id, plus_code, type, url, utc_offsetwycofane/wycofane z języka JavaScript, wycofano obsługę JavaScriptuutc_offset_minutesvicinity

Nawiązanie kontaktu,

Kategoria kontaktu zawiera te pola:
formatted_phone_number, international_phone_number, opening_hours, website

Atmosfera

Kategoria atmosfery zawiera te pola: price_level, rating, reviews, user_ratings_total

Dowiedz się więcej o polach miejsc. Więcej informacji o naliczaniu opłat za żądania dotyczące danych miejsc znajdziesz w artykule Korzystanie i płatności.

Odpowiedzi na temat szczegółów miejsca

Kody stanu

Obiekt odpowiedzi PlacesServiceStatus zawiera informacje o stanie żądania i może zawierać informacje na potrzeby debugowania, które pomogą Ci ustalić, dlaczego nie udało się przesłać informacji o miejscu. Możliwe wartości stanu:

  • INVALID_REQUEST: to żądanie było nieprawidłowe.
  • OK: odpowiedź zawiera prawidłowy wynik.
  • OVER_QUERY_LIMIT: strona przekroczyła limit żądań.
  • NOT_FOUND Wskazanej lokalizacji nie znaleziono w bazie danych Miejsc.
  • REQUEST_DENIED: strona nie może korzystać z usługi PlacesService.
  • UNKNOWN_ERROR: nie udało się przetworzyć żądania PlacesService z powodu błędu serwera. Jeśli spróbujesz ponownie, prośba może zostać zrealizowana.
  • ZERO_RESULTS: nie znaleziono żadnego wyniku dla tego żądania.

Wyniki szczegółowych informacji o miejscu

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

  • address_components: tablica zawierająca osobne komponenty mające zastosowanie do tego adresu.

    Każdy komponent adresu zwykle zawiera te pola:

    • types[] to tablica wskazująca typ komponentu adresu. Zobacz listę obsługiwanych typów.
    • long_name to pełny opis lub nazwa składnika adresu zwracanego przez geokodera.
    • short_name to skrócona nazwa tekstowa komponentu adresu, jeśli jest dostępna. Na przykład składnik adresu dla stanu Alaska może mieć atrybut long_name o nazwie „Alaska” oraz wartość short_name w polu „AK” z dwuliterowym skrótem pocztowym.

    Zwróć uwagę na te informacje na temat tablicy address_components[]:

    • Tablica komponentów adresu może zawierać więcej komponentów niż formatted_address.
    • Tablica nie musi zawierać wszystkich podmiotów politycznych z adresem (oprócz tych uwzględnionych w elemencie formatted_address). Aby pobrać wszystkie jednostki polityczne, które mają określony adres, użyj odwrotnego geokodowania, podając szerokość i długość geograficzną adresu jako parametr w żądaniu.
    • Nie możemy zagwarantować, że format odpowiedzi będzie taki sam między żądaniami. Liczba address_components różni się w zależności od żądanego adresu i może się z czasem zmieniać dla tego samego adresu. Komponent może zmieniać pozycję w tablicy. Typ komponentu może się zmieniać. Konkretnego komponentu może brakować w późniejszej odpowiedzi.
  • business_status wskazuje stan operacyjny miejsca, jeśli jest to firma. Może zawierać jedną z tych wartości:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Jeśli dane nie istnieją, wartość business_status nie jest zwracana.
  • formatted_address: czytelny dla człowieka adres miejsca.

    Często jest to równoważny adres pocztowy. Pamiętaj, że w niektórych krajach (np. w Wielkiej Brytanii) nie można rozpowszechniać prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.

    Sformatowany adres logicznie składa się z co najmniej jednego komponentu adresu. Na przykład adres „111 8th Aleja, Nowy Jork, Nowy Jork” składa się z tych komponentów: „111” (numer domu), „8 Aleja” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).

    Nie analizuj sformatowanego adresu automatycznie. Zamiast tego należy używać poszczególnych komponentów adresu, które oprócz sformatowanego pola adresu zawierają odpowiedź interfejsu API.

  • formatted_phone_number: numer telefonu miejsca sformatowany zgodnie z lokalną konwencją numerów.
  • geometry: informacje związane z geometrią miejsca. Obejmuje to m.in.:
    • location podaje szerokość i długość geograficzną miejsca.
    • viewport określa preferowany widoczny obszar na mapie podczas wyświetlania tego miejsca.
  • permanently_closed (wycofano) to flaga wartości logicznej, która wskazuje, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartość true). Nie używaj właściwości permanently_closed. Zamiast tego użyj narzędzia business_status, aby sprawdzić stan operacyjny firmy.
  • plus_code (zobacz Otwórz kod lokalizacji i kody plus) to zakodowane odniesienie do lokalizacji utworzone na podstawie współrzędnych geograficznych, które reprezentuje obszar: 1/8000 stopnia (około 14 m x 14 m na równiku) lub mniejszy. Kody plus mogą zastąpić adresy ulic w miejscach, w których one nie istnieją (gdzie budynki nie są ponumerowane lub ulice nie mają nazw).

    Kod plus jest sformatowany jako kod globalny i kod złożony:

    • global_code to czteroznakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).
    • compound_code to co najmniej 6-znakowy kod lokalny z wyraźną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tych treści automatycznie.
    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 morzu lub pustyni), może zostać zwrócony tylko kod globalny.
  • html_attributions: tekst źródła, który będzie wyświetlany w przypadku tego wyniku dotyczącego miejsca.
  • icon: adres URL zasobu obrazu, którego można użyć do reprezentowania typu tego miejsca.
  • international_phone_number zawiera numer telefonu danego miejsca w formacie międzynarodowym. Format międzynarodowy obejmuje kod kraju, który jest poprzedzony znakiem plusa (+). Na przykład international_phone_number biura Google w Sydney to +61 2 9374 4000.
  • name: nazwa miejsca.
  • utc_offset Wycofano z biblioteki Miejsc Google Maps JavaScript API. Zamiast tego użyj parametru utc_offset_minutes.
  • utc_offset_minutes podaje liczbę minut, o ile bieżąca strefa czasowa tego miejsca jest przesunięta w stosunku do czasu UTC. Na przykład w przypadku miejsc w Sydney (Australia) w czasie letnim będzie to 660 (+11 godzin od czasu UTC), a w przypadku miejsc w Kalifornii poza czasem letnim – -480 (–8 godzin od czasu UTC).
  • opening_hours zawiera te informacje:
    • open_now (wycofano z biblioteki Places, Maps JavaScript API; zamiast tego użyj funkcji opening_hours.isOpen(); Obejrzyj ten film, aby dowiedzieć się, jak używać atrybutu isOpen z informacjami o miejscu). to wartość logiczna wskazująca, czy miejsce jest otwarte w bieżącym czasie.
    • periods[] to tablica okresów otwarcia obejmujących 7 dni od niedzieli w kolejności chronologicznej. Każdy okres obejmuje:
      • open zawiera parę obiektów daty i godziny, które opisują, kiedy miejsce jest otwarte:
        • day liczbę z zakresu od 0 do 6 odpowiadającą dniom tygodnia, zaczynając od niedzieli. Na przykład 2 oznacza wtorek.
        • time może zawierać porę dnia w 24-godzinnym formacie ggmm (wartości mieszczą się w zakresie 0000–2359). Wartość time będzie podawana w strefie czasowej miejsca.
      • close może zawierać parę obiektów dnia i godziny opisującej, kiedy miejsce jest zamknięte. Uwaga: jeśli miejsce jest zawsze otwarte, w odpowiedzi nie będzie sekcji close. Aplikacje mogą być reprezentowane jako zawsze otwarte jako okres open zawierający day o wartości 0 i time o wartości 0000, bez close.
    • weekday_text to tablica 7 ciągów znaków reprezentujących sformatowane godziny otwarcia w poszczególnych dniach tygodnia. Jeśli w żądaniu dotyczącym szczegółów miejsca został określony parametr language, usługa Miejsca odpowiednio sformatuje i zlokalizuje godziny otwarcia odpowiednio do tego języka. Kolejność elementów w tej tablicy zależy od parametru language. W przypadku niektórych języków tydzień zaczyna się w poniedziałek, a w innych – w niedzielę.
  • permanently_closed (wycofano) to flaga wartości logicznej, która wskazuje, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartość true). Nie używaj właściwości permanently_closed. Zamiast tego użyj narzędzia business_status, aby sprawdzić stan operacyjny firmy.
  • photos[]: tablica obiektów PlacePhoto. PlacePhoto może posłużyć do uzyskania zdjęcia za pomocą metody getUrl() albo możesz sprawdzić obiekt pod kątem tych wartości:
    • height: maksymalna wysokość obrazu w pikselach.
    • width: maksymalna szerokość obrazu w pikselach.
    • html_attributions: tekst źródła, który będzie wyświetlany z tym zdjęciem miejsca.
  • place_id: identyfikator tekstowy, który jednoznacznie identyfikuje miejsce i może służyć do pobierania informacji o tym miejscu za pomocą żądania szczegółów miejsca. Dowiedz się więcej o tym, jak określić odwołanie do miejsca za pomocą identyfikatora miejsca.
  • rating: ocena miejsca w skali od 0,0 do 5,0, określona na podstawie zbiorczych opinii użytkowników.
  • reviews tablicę z maksymalnie 5 opiniami. Każda opinia składa się z kilku elementów:
    • aspects[] zawiera tablicę obiektów PlaceAspectRating, z których każdy zawiera ocenę jednego atrybutu instytucji. Pierwszy obiekt w tablicy jest uważany za aspekt główny. Każdy element PlaceAspectRating został zdefiniowany jako:
      • type – nazwa ocenianego aspektu. Obsługiwane są te typy: appeal, atmosphere, decor, facilities, food, overall, quality i service.
      • rating ocenę użytkownika za ten konkretny aspekt (od 0 do 3).
    • author_name nazwa użytkownika, który przesłał opinię. Opinie anonimowe są przypisywane do „Użytkownika Google”. Jeśli ustawiono parametr language, wyrażenie „Użytkownik Google” zwróci zlokalizowany ciąg znaków.
    • author_url adres URL profilu Google+ użytkownika, jeśli jest dostępny.
    • language kod języka IETF wskazujący język użyty w opinii użytkownika. To pole zawiera tylko główny tag języka, a nie tag dodatkowy wskazujący kraj lub region. Na przykład wszystkie opinie w języku angielskim są oznaczone tagiem „en”, a nie „en-AU” czy „en-UK”.
    • rating ogólną ocenę tego miejsca podaną przez użytkownika. Jest to liczba całkowita z zakresu od 1 do 5.
    • text opinię użytkownika. Przy sprawdzaniu lokalizacji w Miejscach Google takie opinie są uznawane za opcjonalne, dlatego to pole może być puste.
  • types Tablica typów dla tego miejsca (np. ["political", "locality"] lub ["restaurant", "lodging"]). Ta tablica może zawierać wiele wartości lub być pusta. Nowe wartości mogą zostać wprowadzone bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.
  • url: URL oficjalnej strony tego miejsca w Google. To jest strona należąca do Google, która zawiera najlepsze dostępne informacje o tym miejscu. Aplikacje muszą zawierać link do strony lub umieścić ją na dowolnym ekranie, który wyświetla użytkownikowi szczegółowe wyniki dotyczące danego miejsca.
  • vicinity: uproszczony adres miejsca, w tym nazwa ulicy, numer domu i rejon, ale nie województwo, kod pocztowy ani kraj. Na przykład biuro Google w Sydney w Australii ma wartość vicinity o wartości 5/48 Pirrama Road, Pyrmont. Właściwość vicinity jest zwracana tylko w przypadku wyszukiwania w pobliżu.
  • website zawiera listę wiarygodnej witryny tego miejsca, np. strony głównej firmy.

Uwaga: wielowymiarowe oceny mogą nie być dostępne we wszystkich lokalizacjach. Jeśli opinii jest za mało, szczegóły odpowiedzi będą zawierać starszą ocenę w skali od 0,0 do 5,0 (jeśli jest dostępna) lub brak oceny.

Tworzenie odwołania do miejsca za pomocą identyfikatora miejsca

Identyfikator miejsca to niepowtarzalne odniesienie do danego miejsca w Mapach Google. Identyfikatory miejsc są dostępne dla większości lokalizacji, w tym firm, punktów orientacyjnych, parków i skrzyżowań.

Aby użyć identyfikatora miejsca w aplikacji, musisz najpierw wyszukać identyfikator, który jest dostępny w PlaceResult w żądaniu wyszukiwania miejsca lub szczegółów. Następnie możesz użyć tego identyfikatora miejsca, aby wyszukać PlaceDetails.

Identyfikatory miejsc są zwolnione z ograniczeń w pamięci podręcznej opisanych w artykule 3.2.3(b) Warunków korzystania z usługi Google Maps Platform. Możesz więc zapisywać wartości identyfikatorów miejsca do późniejszego wykorzystania. Sprawdzone metody przechowywania identyfikatorów miejsc znajdziesz w omówieniu identyfikatorów miejsc.

var map;

function initialize() {
  // Create a map centered in Pyrmont, Sydney (Australia).
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -33.8666, lng: 151.1958},
    zoom: 15
  });

  // Search for Google's office in Australia.
  var request = {
    location: map.getCenter(),
    radius: '500',
    query: 'Google Sydney'
  };

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

// Checks that the PlacesServiceStatus is OK, and adds a marker
// using the place ID and location from the PlacesService.
function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var marker = new google.maps.Marker({
      map: map,
      place: {
        placeId: results[0].place_id,
        location: results[0].geometry.location
      }
    });
  }
}

google.maps.event.addDomListener(window, 'load', initialize);

Zdjęcia miejsca

Funkcja zdjęć miejsc umożliwia dodawanie do witryny wysokiej jakości zdjęć. Usługa Zdjęcia zapewnia dostęp do milionów zdjęć przechowywanych w bazie danych Miejsc i Google+ Lokalnie. Gdy uzyskasz informacje o miejscu przy użyciu żądania o szczegóły miejsca, w przypadku odpowiednich zdjęć zostaną zwrócone odniesienia do zdjęć. Żądania wyszukiwania w pobliżu i wyszukiwania tekstowego zwracają w razie potrzeby również pojedyncze odwołanie do zdjęcia dla każdego miejsca. Za pomocą usługi Zdjęcia możesz uzyskać dostęp do zdjęć, do których istnieją odwołania, i zmienić ich rozmiar na taki, który odpowiada Twojej aplikacji.

W przypadku każdego żądania getDetails(), textSearch() lub nearbySearch() dotyczącego obiektu PlacesService tablica obiektów PlacePhoto będzie zwracana jako część obiektu PlaceResult.

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

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

Możesz zażądać adresu URL powiązanego obrazu, wywołując metodę PlacePhoto.getUrl() i przekazując prawidłowy obiekt PhotoOptions. Obiekt PhotoOptions umożliwia określenie maksymalnej wysokości i szerokości obrazu. Jeśli podasz wartości zarówno maxHeight, jak i maxWidth, usługa fotograficzna zmieni rozmiar obrazu na mniejszy z dwóch rozmiarów, zachowując oryginalny współczynnik proporcji.

Poniższy fragment kodu akceptuje obiekt miejsca i dodaje znacznik do mapy, jeśli takie zdjęcie istnieje. Domyślny obraz znacznika zostanie zastąpiony małą wersją zdjęcia.

function createPhotoMarker(place) {
  var photos = place.photos;
  if (!photos) {
    return;
  }

  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location,
    title: place.name,
    icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35})
  });
}

Zdjęcia zwracane przez usługę Zdjęcia pochodzą z różnych lokalizacji, m.in. od właścicieli firm i zdjęć przesłanych przez użytkowników. W większości przypadków można użyć tych zdjęć bez informacji o ich źródle lub dodać do nich wymagane informacje o autorze. Jeśli jednak zwrócony element photo zawiera wartość w polu html_attributions, musisz podać dodatkową informację w swojej aplikacji przy każdym wyświetleniu obrazu.