biblioteka Miejsc

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:

  1. Otwórz konsolę Google Cloud.
  2. Kliknij przycisk Wybierz projekt, a potem wybierz ten sam projekt skonfigurowany dla interfejsu Maps JavaScript API i kliknij Otwórz.
  3. Na liście interfejsów API w panelu odszukaj interfejs Places API.
  4. Jeśli na liście widzisz interfejs Places API, jest on już włączony. Jeśli interfejs API nie jest wymieniony, włącz go:
    1. 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.
    2. Wyszukaj Places API, a następnie wybierz go z listy wyników.
    3. 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:
  1. Otwórz konsolę Google Cloud.
  2. Kliknij menu projektu i wybierz projekt, który zawiera 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 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ć).
  6. 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ń:

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 namegeometry.

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

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:

  • LatLngBounds.
  • obszar koła zdefiniowany jako kombinacja właściwości location, która określa środek koła jako obiekt LatLng, 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ć obiektem google.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.
    • locationradius; pierwszy przyjmuje obiekt google.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 parametr rankBy ma wartość DISTANCE, musisz podać wartość parametru location, ale nie możesz podać wartości parametru radius ani bounds.
  • 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.
  • minPriceLevelmaxPriceLevel (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 polu keyword 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ści openNow na false 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 parametr google.maps.places.RankBy.PROMINENCE, parametr radius 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 punktu location (wymagane). Pamiętaj, że nie możesz określić niestandardowego parametru bounds ani radius, jeśli określisz parametr RankBy.DISTANCE. Jeśli określisz parametr RankBy.DISTANCE, wymagany jest co najmniej jeden z parametró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 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]);
    }
  }
}

Zobacz przykład

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 PlacesServicePlacesService.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 parametr type.
  • 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ści openNow na false nie ma żadnego wpływu.
    • minPriceLevelmaxPriceLevel — 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ć obiektem google.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.
      • locationradius – możesz stosować wyniki w określonym kręgu, podając parametr locationradius. 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 obiekt google.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()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
    Jeśli nie ma żadnych danych, 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ści permanently_closed. Zamiast tego użyj właściwości business_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.
    Zazwyczaj zwracane są zarówno kod globalny, jak i kod złożony. Jeśli jednak wynik znajduje się w odległym miejscu (np. na oceanie lub na pustyni), może zostać zwrócony tylko kod globalny.
  • 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 obiekty PlaceResult 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ści utc_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;
Zobacz przykład

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);
  }
}

Zobacz przykład

Pola (informacje o miejscu)

Parametr fields 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” i short_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_componentszależ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
    Jeśli nie ma żadnych danych, 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ści permanently_closed. Zamiast tego użyj właściwości business_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.
    Zazwyczaj zwracane są zarówno kod globalny, jak i kod złożony. Jeśli jednak wynik znajduje się w odległym miejscu (np. na oceanie lub na pustyni), może zostać zwrócony tylko kod globalny.
  • 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ład international_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 tego utc_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ć z isOpen 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 sekcji close. Aplikacje mogą korzystać z funkcji zawsze otwartej, która jest reprezentowana przez 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 Szczegóły miejsca podano parametr language, usługa Places sformatuje i przetłumaczy godziny otwarcia na odpowiedni język. Kolejność elementów w tej tablicy zależy od parametru language. 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ści permanently_closed. Zamiast tego użyj właściwości business_status, aby uzyskać informacje o stanie działania firmy.
  • photos[]: tablica obiektów PlacePhoto. Możesz użyć PlacePhoto, aby uzyskać zdjęcie za pomocą metody getUrl(), 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ów PlaceAspectRating, z których każdy zawiera ocenę jednego atrybutu obiektu. Pierwszy obiekt w tablicy jest uważany za główny aspekt. Każdy element PlaceAspectRating jest zdefiniowany jako:
      • type nazwa aspektu, który jest oceniany. Obsługiwane są te typy: appeal, atmosphere, decor, facilities, food, overall, quality i service.
      • 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.
  • 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 1PlacePhoto 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.