biblioteka Miejsc

Opis

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

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

Pierwsze kroki

Jeśli nie masz doświadczenia z interfejsem Maps JavaScript API lub z JavaScriptem, zalecamy, aby przed rozpoczęciem pracy zapoznać się z kodem JavaScript i uzyskać klucz interfejsu API.

Włącz interfejsy API

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

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

  1. Otwórz Google Cloud Console.
  2. Kliknij przycisk Wybierz projekt, a następnie wybierz ten sam projekt, który został skonfigurowany na potrzeby interfejsu Maps JavaScript API, i kliknij Otwórz.
  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. Aby wyświetlić kartę Biblioteka, u góry strony wybierz WŁĄCZ INTERFEJSY API I USŁUGI. Możesz też wybrać w menu po lewej stronie opcję Biblioteka.
    2. Wyszukaj Places API, a następnie wybierz go z listy wyników.
    3. Kliknij WŁĄCZ. Po zakończeniu procesu Places API pojawi się na liście interfejsów API w panelu.

Wczytuję bibliotekę

Usługa Miejsca jest samodzielną biblioteką, oddzielną od głównego kodu interfejsu Maps JavaScript API. Aby korzystać z funkcji zawartych w tej bibliotece, musisz ją najpierw wczytać za pomocą parametru libraries w adresie URL wczytywania interfejsu API Map Google:

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

Więcej informacji znajdziesz w omówieniu bibliotek.

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

Zastosowanie ograniczeń interfejsów API do kluczy ogranicza możliwość używania klucza interfejsu API do co najmniej jednego interfejsu API lub pakietu SDK. Żądania do interfejsu API lub pakietu SDK powiązane z kluczem interfejsu API będą przetwarzane. Żądania do interfejsu API lub pakietu SDK niepowiązane z kluczem interfejsu API zakończą się niepowodzeniem. Aby ograniczyć użycie klucza interfejsu API w bibliotece Miejsc, Maps JavaScript API:
  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 wybierz Mapy Google 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 wykorzystania

Limity

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

Zasady

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

Wyszukiwania miejsc

Za pomocą usługi Miejsca można przeprowadzać następujące rodzaje wyszukiwań:

Wyświetlane informacje mogą obejmować lokale, takie jak restauracje, sklepy i biura, a także wyniki geokodu, które określają adresy, obszary polityczne (np. miejscowości i miasta) oraz inne ciekawe miejsca.

Znajdowanie próśb o miejsce

Żądanie Znajdź miejsce umożliwia wyszukiwanie miejsca przy użyciu zapytania tekstowego lub numeru telefonu. Istnieją 2 typy żądań „Znajdź miejsce”:

Znajdź miejsce na podstawie zapytania

Polecenie Znajdź na podstawie zapytania pobiera tekst i zwraca miejsce. Dane wejściowe mogą być dowolnymi danymi miejsc, np. nazwą lub adresem firmy. Aby utworzyć żądanie Znajdź miejsce z żądania, wywołaj metodę PlacesService findPlaceFromQuery(), która przyjmuje te parametry:

  • query (wymagany) – ciąg tekstowy, który należy wyszukać, np. „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria instytucji. Inne rodzaje danych wejściowych mogą powodować błędy i nie gwarantują, że będą zwracać prawidłowe wyniki. Interfejs Places API będzie zwracać wyniki wyszukiwania na podstawie tego ciągu znaków i uporządkować wyniki według ich postrzeganej trafności.
  • fields (wymagany) Co najmniej jedno pole określające typy danych miejsc do zwrócenia.
  • locationBias (opcjonalny) – współrzędne definiujące obszar wyszukiwania. Może to być jedna z tych wartości:
    • Zbiór współrzędnych szerokości i długości geograficznej określonych jako LatLngLiteral lub obiekt LatLng
    • Prostokątne granice (2 pary szerokości i długości lub obiekt LatLngBounds)
    • Promień (w metrach) wyśrodkowany na szerokości/długości geograficznej

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

Poniższy przykład pokazuje wywołanie findPlaceFromQuery(), wyszukując „Muzeum Sztuki Współczesnej Australia” z uwzględnieniem pól name i geometry.

var map;
var service;
var infowindow;

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

  infowindow = new google.maps.InfoWindow();

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

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

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

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

Znajdź miejsce na podstawie numeru telefonu

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

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

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

Pola (metody znajdowania miejsc)

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

Pola odpowiadają wynikom wyszukiwania miejsc i są podzielone na trzy kategorie rozliczeniowe: Podstawowa, Kontakt oraz Atmosfera. Płatności za pola podstawowe są naliczane według stawki podstawowej i nie powodują naliczenia dodatkowych opłat. Za pola kontaktu i atmosfery naliczana jest wyższa stawka. Więcej informacji znajdziesz w arkuszu opłat. Atrybucje (html_attributions) są zawsze zwracane przy każdym wywołaniu, niezależnie od tego, czy pole zostało żądane.

Podstawowy

Zawiera ona te pola:
business_status, formatted_address, geometry, icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (wycofane), photos, place_id, plus_code, types

Nawiązanie kontaktu,

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

Atmosfera

Kategoria Atmosfera zawiera te pola: price_level, rating, user_ratings_total

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

Ustaw odchylenie lokalizacji (metody znajdowania miejsc)

Użyj parametru locationBias, aby uzyskać wyniki dla określonego obszaru w polu Znajdź miejsce. locationBias możesz ustawić na te sposoby:

Stronniczość wyników w określonym obszarze:

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

Zdefiniuj prostokątny obszar do wyszukiwania:

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

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

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

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

Zapytania o wyszukiwanie w pobliżu

Wyszukiwanie w pobliżu pozwala wyszukiwać miejsca na określonym obszarze według słowa kluczowego lub typu. Wyszukiwanie w pobliżu musi zawsze obejmować lokalizację, którą można określić na jeden z dwóch sposobów:

  • LatLngBounds.
  • obszar kołowy zdefiniowany jako kombinacja właściwości location – wskazując środek koła jako obiekt LatLng – i promień mierzony w metrach.

Wyszukiwanie miejsc w pobliżu jest inicjowane przez wywołanie metody nearbySearch() obiektu PlacesService, które zwraca tablicę obiektów PlaceResult. Metoda nearbySearch() zastępuje metodę search() od wersji 3.9.

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

Ta metoda pobiera żądanie z tymi polami:

  • Jeden z tych warunków:
    • bounds, który musi być obiektem google.maps.LatLngBounds definiującym prostokątny obszar wyszukiwania, lub
    • location i radius; pierwszy obiekt pobiera obiekt google.maps.LatLng, a drugi – prostą liczbę całkowitą określającą promień koła w metrach. Maksymalny dozwolony promień to 50 000 metrów. Pamiętaj, że gdy rankBy ma wartość DISTANCE, musisz określić location, ale nie możesz określić radius ani bounds.
  • keyword (opcjonalny) – hasło, które ma zostać dopasowane do wszystkich dostępnych pól, w tym między innymi do nazwy, typu i adresu, a także opinii klientów i innych treści firm zewnętrznych.
  • minPriceLevel i maxPriceLevel (opcjonalne) – ogranicza wyniki tylko do miejsc w określonym zakresie. Prawidłowe wartości mieszczą się w zakresie od 0 (najwyższa cena) do 4 (najdroższa) włącznie.
  • name Wycofane. Odpowiednik: keyword. Wartości w tym polu są łączone z wartościami w 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. Miejsca, które nie mają określonych godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane, jeśli uwzględnisz ten parametr w swoim zapytaniu. Ustawienie dla 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 umożliwia sortowanie wyników na podstawie ich ważności. Miejsca w określonym promieniu w rankingu będą faworyzowane względem podobnych miejsc, które są mniej widoczne. Na widoczność może mieć wpływ pozycja miejsca w indeksie Google, popularność globalna i inne czynniki. Jeśli jest określony google.maps.places.RankBy.PROMINENCE, wymagany jest parametr radius.
    • google.maps.places.RankBy.DISTANCE. Ta opcja powoduje sortowanie wyników w kolejności rosnącej według odległości od podanej wartości location (wymagane). Pamiętaj, że nie możesz określić niestandardowych właściwości bounds ani radius, jeśli podasz RankBy.DISTANCE. Jeśli podasz właściwość RankBy.DISTANCE, wymagany jest co najmniej 1 z właściwości keyword, name lub type.
  • type – ogranicza wyniki do miejsc pasujących do określonego typu. Możesz określić tylko 1 typ (jeśli podasz więcej niż 1 typ, wszystkie typy po pierwszej pozycji będą ignorowane). Zobacz listę obsługiwanych typów.

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

var map;
var service;
var infowindow;

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

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

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

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

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

Zobacz przykład

Żądania wyszukiwania tekstu

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

Wyszukiwanie tekstu jest inicjowane przez wywołanie metody textSearch() obiektu PlacesService.

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

Ta metoda pobiera żądanie z tymi polami:

  • query (wymagany) – ciąg tekstowy, który chcesz wyszukać, np. „restauracja” lub „ulica Główna 123”. Musi to być nazwa miejsca, adres lub kategoria instytucji. Inne typy danych wejściowych mogą powodować błędy i nie gwarantują, że będą zwracać prawidłowe wyniki. Usługa Miejsca będzie zwracać wyniki wyszukiwania na podstawie tego ciągu znaków i uporządkować wyniki według ich postrzeganej trafności. Ten parametr staje się opcjonalny, jeśli 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 są otwarte w momencie wysyłania zapytania. Miejsca, które nie mają określonych godzin otwarcia w bazie danych Miejsc Google, nie będą zwracane, jeśli uwzględnisz ten parametr w swoim zapytaniu. Ustawienie dla openNow na false nie ma żadnego efektu.
    • minPriceLevel i maxPriceLevel – ogranicza wyniki tylko do tych miejsc na określonym poziomie ceny. Prawidłowe wartości mieszczą się w zakresie od 0 (najbardziej przystępny cenowo) do 4 (najdroższy) włącznie.
    • Jeden z tych warunków:
      • bounds – obiekt google.maps.LatLngBounds definiujący prostokąt, w którym ma zostać przeprowadzone wyszukiwanie, lub
      • a location i radius – możesz ukierunkować wyniki do określonego kręgu, przekazując parametr 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 promień to prosta liczba całkowita, która przedstawia promień koła w metrach. Maksymalny dozwolony promień to 50 000 metrów.
    • type – ogranicza wyniki do miejsc pasujących do określonego typu. Możesz określić tylko 1 typ (jeśli podasz więcej niż 1 typ, wszystkie typy po pierwszej pozycji będą ignorowane). Zobacz listę obsługiwanych typów.

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

var map;
var service;
var infowindow;

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

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

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

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

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

Wyszukaj odpowiedzi

Kody stanu

Obiekt odpowiedzi PlacesServiceStatus zawiera informacje o stanie żądania i może zawierać informacje na potrzeby debugowania, które pomagają znaleźć przyczynę niepowodzenia żądania. Możliwe wartości stanu:

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

Wyniki wyszukiwania miejsc

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

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

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

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

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

    Nie analizuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych komponentów adresu, które odpowiedź interfejsu API zawiera oprócz sformatowanego pola adresu.

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

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

    • global_code to 4-znakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).
    • compound_code to co najmniej 6-znakowy kod lokalny z konkretną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tej treści automatycznie.
    Zwykle zwracany jest zarówno kod globalny, jak i kod złożony. Jeśli jednak wynik znajduje się w odległej lokalizacji (np. na oceanie lub pustyni), może zostać zwrócony tylko kod globalny.
  • html_attributions: tablica atrybucji, którą musisz wyświetlać przy wyświetlaniu wyników wyszukiwania. Każda pozycja w tablicy zawiera tekst HTML pojedynczego źródła danych. Uwaga: w tym przypadku widoczne są wszystkie informacje o atrybucji dotyczące całej odpowiedzi na wyszukiwanie. Dlatego wszystkie obiekty PlaceResult w odpowiedzi zawierają identyczne listy atrybucji.
  • icon zwraca adres URL ikony w formacie PNG o wymiarach 71 x 71 pikseli.
  • icon_mask_base_uri zwraca podstawowy adres URL ikony, która nie jest kolorowa, pomniejszony o rozszerzenie .svg lub .png.
  • icon_background_color zwraca domyślny szesnastkowy kod koloru kategorii miejsca.
  • name: nazwa miejsca.
  • opening_hours może zawierać te informacje:
    • open_now to wartość logiczna wskazująca, czy miejsce jest otwarte w bieżącej godzinie (wycofane w bibliotece Miejsc, Maps JavaScript API; zamiast tego użyj 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 od 0, 0 do 5, 0 opracowaną na podstawie zagregowanych opinii użytkowników.
  • types Tablica typów dla tego miejsca (np. ["political", "locality"] lub ["restaurant", "lodging"]). Ta tablica może zawierać wiele wartości lub być pusta. Możemy wprowadzać nowe wartości bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.
  • vicinity: uproszczony adres miejsca, obejmujący nazwę ulicy, numer ulicy i lokalizację, z wyjątkiem prowincji/stanu, kodu pocztowego ani kraju. Na przykład w siedzibie Google w Sydney w Australii wartość vicinity ma wartość 5/48 Pirrama Road, Pyrmont.

Dostęp do wyników dodatkowych

Domyślnie każde wyszukiwanie miejsc zwraca maksymalnie 20 wyników na zapytanie. Każde wyszukiwanie może jednak zwrócić nawet 60 wyników podzielonych na 3 strony. Dodatkowe strony są dostępne za pośrednictwem obiektu PlaceSearchPagination. Aby uzyskać dostęp do dodatkowych stron, musisz przechwycić obiekt PlaceSearchPagination za pomocą funkcji wywołania zwrotnego. Obiekt PlaceSearchPagination jest zdefiniowany jako:

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

Aby zobaczyć następny zestaw wyników, zadzwoń pod numer nextPage. Każda strona wyników musi zostać wyświetlona przed wyświetleniem następnej strony wyników. Pamiętaj, że każde wyszukiwanie jest liczone jako jedno żądanie w ramach limitów wykorzystania.

Poniższy przykład pokazuje, jak zmienić funkcję wywołania zwrotnego, aby przechwycić obiekt PlaceSearchPagination i umożliwić wysyłanie wielu żądań wyszukiwania.

TypeScript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

JavaScript

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

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

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

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

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

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

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

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

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

window.initMap = initMap;
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 miejsc, można użyć identyfikatora miejsca, aby przesłać dodatkowe informacje o nim, takie jak pełny adres, numer telefonu, oceny użytkowników i opinie itp.

Prośby o informacje o miejscu

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

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

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

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

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

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

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

Zobacz przykład

Pola (szczegóły miejsca)

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

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

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

Podstawowy

Zawiera ona te pola:
address_components, adr_address, business_status, formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (wycofane), photo, place_id, plus_code, type, url, utc_offsetw bibliotece, wycofano} interfejs API / kod JavaScriptutc_offset_minutesvicinity

Nawiązanie kontaktu,

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

Atmosfera

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

Dowiedz się więcej o polach miejsc. Więcej informacji o naliczaniu opłat za żądania danych miejsc znajdziesz w artykule Korzystanie i rozliczenia.

Odpowiedzi dotyczące szczegółów miejsca

Kody stanu

Obiekt odpowiedzi PlacesServiceStatus zawiera informacje o stanie żądania i może zawierać informacje na potrzeby debugowania, które pomagają znaleźć przyczynę niepowodzenia żądania szczegółów miejsca. Możliwe wartości stanu:

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

Szczegółowe informacje o miejscu

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

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

    Każdy komponent adresu zwykle zawiera te pola:

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

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

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

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

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

    Nie analizuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych komponentów adresu, które odpowiedź interfejsu API zawiera oprócz sformatowanego pola adresu.

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

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

    • global_code to 4-znakowy numer kierunkowy i co najmniej 6-znakowy kod lokalny (849VCWC8+R9).
    • compound_code to co najmniej 6-znakowy kod lokalny z konkretną lokalizacją (CWC8+R9, Mountain View, CA, USA). Nie analizuj tej treści automatycznie.
    Zwykle zwracany jest zarówno kod globalny, jak i kod złożony. Jeśli jednak wynik znajduje się w odległej lokalizacji (np. na oceanie lub pustyni), może zostać zwrócony tylko kod globalny.
  • html_attributions: tekst źródła do wyświetlenia w przypadku tego miejsca.
  • icon: URL zasobu graficznego, którego można użyć do reprezentowania typu tego miejsca.
  • international_phone_number zawiera numer telefonu tego miejsca w formacie międzynarodowym. Format międzynarodowy obejmuje kod kraju i jest poprzedzony znakiem plusa (+). Na przykład international_phone_number dla biura Google w Sydney w Australii to +61 2 9374 4000.
  • name: nazwa miejsca.
  • utc_offset Wycofane z biblioteki Miejsc (Map Google) w interfejsie API JavaScript. Użyj zamiast niego parametru utc_offset_minutes.
  • utc_offset_minutes zawiera liczbę minut, o ile obecna strefa czasowa tego miejsca jest przesunięta względem czasu UTC. Na przykład w przypadku miejsc w Sydney w Australii w okresie letnim będzie to 660 (+11 godzin od UTC), a w przypadku miejsc w Kalifornii poza czasem letnim – -480 (–8 godzin w przypadku czasu UTC).
  • Pole opening_hours zawiera te informacje:
    • open_now (wycofano z biblioteki miejsc oraz z interfejsu Maps JavaScript API; zamiast niego użyj opening_hours.isOpen(); Obejrzyj ten film, aby dowiedzieć się, jak używać właściwości isOpen z informacjami o miejscu). to wartość logiczna wskazująca, czy miejsce jest otwarte o danej porze.
    • periods[] to tablica okresów otwarcia obejmujących 7 dni od niedzieli w kolejności chronologicznej. Każdy okres obejmuje:
      • open zawiera parę obiektów dnia i godziny opisujących otwarcie danego miejsca:
        • day liczbę od 0 do 6 odpowiadającą dniom tygodnia, zaczynając od niedzieli. Na przykład 2 oznacza wtorek.
        • time może zawierać porę dnia w 24-godzinnym formacie ggmm (wartości mieszczą się w zakresie 0000–2359). time będzie raportowany w strefie czasowej miejsca.
      • close może zawierać parę obiektów daty i godziny opisujące, kiedy miejsce jest zamknięte. Uwaga: jeśli miejsce jest zawsze otwarte, w odpowiedzi nie będzie sekcji close. Aplikacje mogą mieć pewność, że funkcja „zawsze otwarta” jest reprezentowana jako okres open zawierający day o wartości 0, 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 określono parametr language, usługa Miejsca odpowiednio sformatuje i zlokalizuje godziny otwarcia pod kątem danego języka. Kolejność elementów w tej tablicy zależy od parametru language. W przypadku niektórych języków tydzień rozpoczyna się w poniedziałek, a dla innych w niedzielę.
  • permanently_closed (wycofano) to flaga wartości logicznej, która wskazuje, czy miejsce zostało zamknięte na stałe czy tymczasowo (wartość true). Nie używaj właściwoś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() lub możesz sprawdzić obiekt pod kątem tych wartości:
    • height: maksymalna wysokość obrazu w pikselach.
    • width: maksymalna szerokość obrazu w pikselach.
    • html_attributions: tekst, który będzie wyświetlany ze zdjęciem tego miejsca.
  • place_id: identyfikator tekstowy, który jednoznacznie identyfikuje miejsce i może służyć do pobierania informacji o nim za pomocą żądania szczegółów miejsca. Dowiedz się więcej o tym, jak określić odwołanie do miejsca za pomocą identyfikatora miejsca.
  • rating: ocena miejsca od 0,0 do 5,0, określona na podstawie zbiorczych opinii użytkowników.
  • reviews tablicę z maksymalnie 5 opiniami. Każda opinia składa się z kilku komponentów:
    • aspects[] zawiera tablicę z obiektami PlaceAspectRating, z których każdy określa ocenę 1 atrybutu obiektu. Pierwszy obiekt w tablicy jest uważany za aspekt podstawowy. Każdy element PlaceAspectRating jest zdefiniowany jako:
      • type nazwa ocenianego aspektu. Obsługiwane są te typy: appeal, atmosphere, decor, facilities, food, overall, quality i service.
      • rating ocenę tego konkretnego aspektu przyznaną przez użytkownika w skali od 0 do 3.
    • author_name – nazwa użytkownika, który przesłał opinię. Anonimowe opinie są przypisywane do „Użytkownika Google”. Jeśli został ustawiony parametr języka, wyrażenie „Użytkownik Google” zwróci zlokalizowany ciąg znaków.
    • author_url adres URL profilu Google+ użytkownika, jeśli jest dostępny.
    • language kod języka IETF wskazujący język użyty w opinii użytkownika. To pole zawiera tylko główny tag języka, a nie tag dodatkowy wskazujący kraj lub region. Na przykład wszystkie opinie w języku angielskim są oznaczone tagiem „en”, a nie „en-AU” czy „en-UK”.
    • rating ogólną ocenę użytkownika dotyczącą tego miejsca. Jest to liczba całkowita z zakresu od 1 do 5.
    • text opinię użytkownika. Podczas sprawdzania lokalizacji w Miejscach Google opinie tekstowe są uznawane za opcjonalne, dlatego to pole może być puste.
  • types Tablica typów dla tego miejsca (np. ["political", "locality"] lub ["restaurant", "lodging"]). Ta tablica może zawierać wiele wartości lub być pusta. Możemy wprowadzać nowe wartości bez wcześniejszego powiadomienia. Zobacz listę obsługiwanych typów.
  • url: URL oficjalnej strony w Google tego miejsca. To jest strona należąca do Google, która zawiera najlepsze dostępne informacje o tym miejscu. Aplikacje muszą zawierać link do strony lub umieścić ją na dowolnym ekranie ze szczegółowymi wynikami dotyczącymi danego miejsca.
  • vicinity: uproszczony adres miejsca, obejmujący nazwę ulicy, numer ulicy i lokalizację, z wyjątkiem prowincji/stanu, kodu pocztowego ani kraju. Na przykład w siedzibie Google w Sydney w Australii wartość vicinity ma wartość 5/48 Pirrama Road, Pyrmont. Właściwość vicinity jest zwracana tylko w przypadku wyszukiwania w pobliżu.
  • website zawiera listę wiarygodnych stron internetowych dotyczących tego miejsca, np. strony głównej firmy.

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

Tworzenie odwołania do miejsca za pomocą identyfikatora miejsca

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

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

Identyfikatory miejsc są zwolnione z ograniczeń buforowania opisanych w artykule 3.2.3(b) Warunków korzystania z usługi Google Maps Platform. Dzięki temu możesz zapisywać wartości identyfikatorów miejsca do późniejszego użycia. Sprawdzone metody przechowywania identyfikatorów miejsc znajdziesz w omówieniu identyfikatorów miejsc.

var map;

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

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

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

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

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

Zdjęcia miejsca

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

Tablica obiektów PlacePhoto będzie zwracana w ramach obiektu PlaceResult w przypadku każdego żądania getDetails(), textSearch() lub nearbySearch() skierowanego do PlacesService.

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

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

Możesz poprosić o adres URL powiązanego obrazu, wywołując metodę PlacePhoto.getUrl() i przekazując prawidłowy obiekt PhotoOptions. Obiekt PhotoOptions pozwala określić maksymalną wysokość i szerokość obrazu. Jeśli podasz zarówno wartość maxHeight, jak i maxWidth, usługa fotograficzna zmieni rozmiar obrazu na mniejszy z tych dwóch rozmiarów, zachowując pierwotny współczynnik proporcji.

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

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

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

Zdjęcia zwracane przez usługę Zdjęcia pochodzą z różnych lokalizacji, m.in. od właścicieli firm i użytkowników. W większości przypadków można użyć tych zdjęć bez podania źródła lub dodać do nich wymagane informacje o ich źródle. Jeśli jednak zwrócony element photo zawiera wartość w polu html_attributions, musisz uwzględnić dodatkową informację w aplikacji wszędzie tam, gdzie wyświetlasz obraz.