Wyszukiwanie w pobliżu (nowość)

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Wprowadzenie

Żądanie Nearby Search (New) zawiera co najmniej 1 typ miejsca i zwraca listę pasujących miejsc w określonym obszarze. Wymagana jest maska pola określająca co najmniej 1 typ danych. Interfejs Nearby Search (New) obsługuje tylko żądania POST.

Narzędzie API Explorer umożliwia wysyłanie żądań w czasie rzeczywistym, dzięki czemu możesz zapoznać się z interfejsem API i jego opcjami:

Wypróbuj interaktywną prezentację, aby zobaczyć wyniki wyszukiwania w pobliżu (nowe) wyświetlane na mapie.

Żądania wyszukiwania w pobliżu (nowe)

Żądanie Nearby Search (New) to żądanie HTTP POST wysyłane na adres URL w formacie:

https://places.googleapis.com/v1/places:searchNearby

Przekaż wszystkie parametry w treści żądania JSON lub w nagłówkach w ramach żądania POST. Na przykład:

curl -X POST -d '{
  "includedTypes": ["restaurant"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965},
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

Odpowiedzi z wyszukiwania w pobliżu (nowość)

Wyszukiwanie w pobliżu (nowe) zwraca obiekt JSON jako odpowiedź. W odpowiedzi:

  • Tablica places zawiera wszystkie pasujące miejsca.
  • Każde miejsce w tablicy jest reprezentowane przez obiekt Place. Obiekt Place zawiera szczegółowe informacje o jednym miejscu.
  • FieldMask przekazany w żądaniu określa listę pól zwracanych w obiekcie Place.

Pełny obiekt JSON ma postać:

{
  "places": [
    {
      object (Place)
    }
  ]
}

Wymagane parametry

  • FieldMask

    Określ listę pól, które mają być zwracane w odpowiedzi, tworząc maskę pola odpowiedzi. Przekaż maskę pola odpowiedzi do metody za pomocą parametru adresu URL $fields lub fields albo za pomocą nagłówka HTTP X-Goog-FieldMask. W odpowiedzi nie ma domyślnej listy zwracanych pól. Jeśli pominiesz maskę pola, metoda zwróci błąd.

    Maskowanie pól to dobra praktyka projektowania, która pozwala uniknąć żądania niepotrzebnych danych, co z kolei pomaga uniknąć niepotrzebnego czasu przetwarzania i opłat.

    Podaj rozdzieloną przecinkami listę typów danych o miejscach, które mają zostać zwrócone. Na przykład, aby pobrać nazwę wyświetlaną i adres miejsca.

    X-Goog-FieldMask: places.displayName,places.formattedAddress

    Użyj *, aby pobrać wszystkie pola.

    X-Goog-FieldMask: *

    Określ co najmniej jedno z tych pól:

    • Te pola wywołują Nearby Search Pro SKU:

      places.accessibilityOptions
      places.addressComponents
      places.addressDescriptor*
      places.adrFormatAddress
      places.attributions
      places.businessStatus
      places.containingPlaces
      places.displayName
      places.formattedAddress
      places.googleMapsLinks
      places.googleMapsUri
      places.iconBackgroundColor
      places.iconMaskBaseUri
      places.id
      places.location
      places.name**
      places.photos
      places.plusCode
      places.postalAddress
      places.primaryType
      places.primaryTypeDisplayName
      places.pureServiceAreaBusiness
      places.shortFormattedAddress
      places.subDestinations
      places.types
      places.utcOffsetMinutes
      places.viewport

      * Opisy adresów są ogólnie dostępne dla klientów w Indiach, a w innych krajach są w fazie eksperymentalnej.

      ** Pole places.name zawiera nazwę zasobu miejsca w formacie: places/PLACE_ID. Użyj places.displayName, aby uzyskać dostęp do tekstowej nazwy miejsca.

    • Te pola wywołują kod SKU Nearby Search Enterprise:

      places.currentOpeningHours
      places.currentSecondaryOpeningHours
      places.internationalPhoneNumber
      places.nationalPhoneNumber
      places.priceLevel
      places.priceRange
      places.rating
      places.regularOpeningHours
      places.regularSecondaryOpeningHours
      places.userRatingCount
      places.websiteUri

    • Te pola wywołują Nearby Search Enterprise + Atmosphere SKU:

      places.allowsDogs
      places.curbsidePickup
      places.delivery
      places.dineIn
      places.editorialSummary
      places.evChargeAmenitySummary
      places.evChargeOptions
      places.fuelOptions
      places.generativeSummary
      places.goodForChildren
      places.goodForGroups
      places.goodForWatchingSports
      places.liveMusic
      places.menuForChildren
      places.neighborhoodSummary
      places.parkingOptions
      places.paymentOptions
      places.outdoorSeating
      places.reservable
      places.restroom
      places.reviews
      places.reviewSummary
      routingSummaries*
      places.servesBeer
      places.servesBreakfast
      places.servesBrunch
      places.servesCocktails
      places.servesCoffee
      places.servesDessert
      places.servesDinner
      places.servesLunch
      places.servesVegetarianFood
      places.servesWine
      places.takeout

      * Tylko wyszukiwanie tekstowe i wyszukiwanie w pobliżu

  • locationRestriction

    Region do wyszukiwania określony jako okrąg zdefiniowany przez punkt środkowy i promień w metrach. Promień musi mieścić się w zakresie od 0,0 do 50 000,0 (włącznie). Domyślny promień to 0,0. W żądaniu musisz ustawić wartość większą niż 0,0.

    Na przykład:

    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": 37.7937,
          "longitude": -122.3965
        },
        "radius": 500.0
      }
    }

Parametry opcjonalne

  • includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes

    Umożliwia określenie listy typów z tabeli A, które będą używane do filtrowania wyników wyszukiwania. W każdej kategorii ograniczeń dotyczących typu możesz określić maksymalnie 50 typów.

    Miejsce może mieć tylko jeden typ podstawowy z typów wymienionych w tabeli A. Na przykład typ podstawowy może być "mexican_restaurant" lub "steak_house". Użyj includedPrimaryTypesexcludedPrimaryTypes, aby filtrować wyniki według głównego typu miejsca.

    Miejsce może też mieć wiele wartości typu z typów Tabela A z nim powiązanych. Na przykład restauracja może mieć te typy: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". Użyj znaków includedTypesexcludedTypes, aby filtrować wyniki na liście typów powiązanych z miejscem.

    Jeśli określisz ogólny typ podstawowy, np. "restaurant" lub "hotel", odpowiedź może zawierać miejsca o bardziej szczegółowym typie podstawowym niż podany. Na przykład określasz, że chcesz uwzględnić typ podstawowy "restaurant". Odpowiedź może wtedy zawierać miejsca z podstawowym typem "restaurant", ale może też zawierać miejsca z bardziej szczegółowym typem podstawowym, np. "chinese_restaurant" lub "seafood_restaurant".

    Jeśli wyszukiwanie zawiera wiele ograniczeń typu, zwracane są tylko miejsca, które spełniają wszystkie te ograniczenia. Jeśli na przykład określisz {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}, zwrócone miejsca będą oferować usługi związane z "restaurant", ale nie będą działać głównie jako "steak_house".

    includedTypes

    Rozdzielona przecinkami lista typów miejsc z tabeli A, których chcesz wyszukać. Jeśli ten parametr zostanie pominięty, zwracane są miejsca wszystkich typów.

    excludedTypes

    Lista rozdzielonych przecinkami typów miejsc z tabeli A, które mają zostać wykluczone z wyszukiwania.

    Jeśli w żądaniu określisz zarówno includedTypes ( np. "school"), jak i excludedTypes (np. "primary_school"), odpowiedź będzie zawierać miejsca, które są sklasyfikowane jako "school", ale nie jako "primary_school". Odpowiedź zawiera miejsca, które pasują do co najmniej jednegoincludedTypesżadnegoexcludedTypes.

    Jeśli wystąpią sprzeczne typy, np. typ pojawiający się zarówno w includedTypes, jak i excludedTypes, zwracany jest błąd INVALID_REQUEST.

    includedPrimaryTypes

    Lista rozdzielonych przecinkami głównych typów miejsc z tabeli A, które mają być uwzględnione w wyszukiwaniu.

    excludedPrimaryTypes

    Lista rozdzielanych przecinkami głównych typów miejsc z tabeli A, które mają zostać wykluczone z wyszukiwania.

    Jeśli występują sprzeczne typy podstawowe, np. typ pojawia się zarówno w includedPrimaryTypes, jak i w excludedPrimaryTypes, zwracany jest błąd INVALID_ARGUMENT.

  • languageCode

    Język, w którym mają być zwracane wyniki.

    • Zobacz listę obsługiwanych języków. Google często aktualizuje listę obsługiwanych języków, więc może ona nie być kompletna.
    • Jeśli nie podasz wartości languageCode, interfejs API domyślnie użyje wartości en. Jeśli podasz nieprawidłowy kod języka, interfejs API zwróci błąd INVALID_ARGUMENT.
    • Interfejs API stara się podać adres ulicy, który jest czytelny zarówno dla użytkownika, jak i mieszkańców. Aby to osiągnąć, zwraca adresy w języku lokalnym, a w razie potrzeby transliteruje je na pismo czytelne dla użytkownika, uwzględniając preferowany język. Wszystkie inne adresy są zwracane w preferowanym języku. Wszystkie komponenty adresu są zwracane w tym samym języku, który jest wybierany na podstawie pierwszego komponentu.
    • Jeśli nazwa nie jest dostępna w preferowanym języku, interfejs API użyje najbliższego dopasowania.
    • Preferowany język ma niewielki wpływ na zestaw wyników, które interfejs API wybiera do zwrócenia, oraz na kolejność, w jakiej są one zwracane. Geokoder interpretuje skróty w różny sposób w zależności od języka, np. skróty typów ulic lub synonimy, które mogą być prawidłowe w jednym języku, ale nie w innym.
  • maxResultCount

    Określa maksymalną liczbę wyników dotyczących miejsc do zwrócenia. Musi mieścić się w przedziale od 1 do 20 (wartość domyślna) włącznie.

  • rankPreference

    Typ rankingu do użycia. Jeśli ten parametr zostanie pominięty, wyniki będą sortowane według popularności. Może mieć jedną z tych wartości:

    • POPULARITY (domyślnie) Sortuje wyniki według popularności.
    • DISTANCE Sortuje wyniki w kolejności rosnącej według odległości od podanej lokalizacji.
  • regionCode

    Kod regionu używany do formatowania odpowiedzi, określony jako dwuznakowy kod CLDR. Nie ma wartości domyślnej.

    Jeśli nazwa kraju w polu formattedAddress w odpowiedzi pasuje do regionCode, kod kraju jest pomijany w polu formattedAddress. Ten parametr nie ma wpływu na parametr adrFormatAddress, który zawsze zawiera nazwę kraju, ani na parametr shortFormattedAddress, który nigdy jej nie zawiera.

    Większość kodów CLDR jest identyczna z kodami ISO 3166-1, z kilkoma istotnymi wyjątkami. Na przykład krajowa domena najwyższego poziomu Zjednoczonego Królestwa to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). W zależności od obowiązujących przepisów parametr może wpływać na wyniki.

Przykłady wyszukiwania w pobliżu (nowa wersja)

Znajdowanie miejsc jednego typu

Poniższy przykład pokazuje żądanie wyszukiwania w pobliżu (nowe) wyświetlanych nazw wszystkich restauracji w promieniu 500 metrów, określonym przez circle:

curl -X POST -d '{
  "includedTypes": ["restaurant"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965},
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

Zwróć uwagę, że nagłówek X-Goog-FieldMask określa, że odpowiedź zawiera te pola danych: places.displayName. Odpowiedź ma wtedy postać:

{
  "places": [
    {
      "displayName": {
        "text": "La Mar Cocina Peruana",
        "languageCode": "en"
      }
    },
    {
      "displayName": {
        "text": "Kokkari Estiatorio",
        "languageCode": "en"
      }
    },
    {
      "displayName": {
        "text": "Harborview Restaurant & Bar",
        "languageCode": "en"
      }
    },
...
}

Dodaj do maski pola więcej typów danych, aby zwracać dodatkowe informacje. Na przykład dodaj places.formattedAddress,places.types,places.websiteUri, aby w odpowiedzi uwzględnić adres, typ i adres internetowy restauracji:

curl -X POST -d '{
  "includedTypes": ["restaurant"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965},
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName,places.formattedAddress,places.types,places.websiteUri" \
https://places.googleapis.com/v1/places:searchNearby

Odpowiedź ma teraz postać:

{
  "places": [
    {
      "types": [
        "seafood_restaurant",
        "restaurant",
        "food",
        "point_of_interest",
        "establishment"
      ],
      "formattedAddress": "PIER 1 1/2 The Embarcadero N, San Francisco, CA 94105, USA",
      "websiteUri": "http://lamarsf.com/",
      "displayName": {
        "text": "La Mar Cocina Peruana",
        "languageCode": "en"
      }
    },
    {
      "types": [
        "greek_restaurant",
        "meal_takeaway",
        "restaurant",
        "food",
        "point_of_interest",
        "establishment"
      ],
      "formattedAddress": "200 Jackson St, San Francisco, CA 94111, USA",
      "websiteUri": "https://kokkari.com/",
      "displayName": {
        "text": "Kokkari Estiatorio",
        "languageCode": "en"
      }
    },
...
}

Znajdowanie miejsc różnych typów

Poniższy przykład pokazuje żądanie wyszukiwania w pobliżu (nowego) dotyczące nazw wyświetlanych wszystkich sklepów ogólnospożywczych i alkoholowych w promieniu 1000 metrów od określonego circle:

curl -X POST -d '{
  "includedTypes": ["liquor_store", "convenience_store"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 1000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName,places.primaryType,places.types" \
https://places.googleapis.com/v1/places:searchNearby
W tym przykładzie do maski pola dodano places.primaryTypeplaces.types, aby odpowiedź zawierała informacje o typie każdego miejsca, co ułatwia wybór odpowiedniego miejsca z wyników.

Poniższy przykład pokazuje żądanie wyszukiwania w pobliżu (nowego) wszystkich miejsc typu "school" z wyłączeniem wszystkich miejsc typu "primary_school", z wynikami posortowanymi według odległości:

curl -X POST -d '{
  "includedTypes": ["school"],
  "excludedTypes": ["primary_school"],
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 1000.0
    }
  },
  "rankPreference": "DISTANCE"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

Wyszukiwanie wszystkich miejsc w pobliżu obszaru i sortowanie ich według odległości

Poniższy przykład pokazuje żądanie wysłane w ramach wyszukiwania w pobliżu (nowego) dotyczące miejsc w pobliżu punktu w centrum San Francisco. W tym przykładzie uwzględniasz parametr rankPreference, aby uszeregować wyniki według odległości:

curl -X POST -d '{
  "maxResultCount": 10,
  "rankPreference": "DISTANCE",
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 1000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName" \
https://places.googleapis.com/v1/places:searchNearby

Pobieranie deskryptorów adresu

Deskryptory adresów zawierają informacje o lokalizacji miejsca, w tym o pobliskich punktach orientacyjnych i obszarach.

Poniższy przykład pokazuje żądanie wyszukiwania w pobliżu (nowego) miejsc w pobliżu centrum handlowego w San Jose. W tym przykładzie w masce pola uwzględniasz addressDescriptors:

curl -X POST -d '{
  "maxResultCount": 5,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.321328,
        "longitude": -121.946275
      },"radius": 1000
    }
  },
  "includedTypes": ["restaurant", "cafe"],
  "excludedTypes": [],
  "rankPreference":"POPULARITY"
}' \
-H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: places.displayName,places.addressDescriptor" \
https://places.googleapis.com/v1/places:searchNearby

Odpowiedź zawiera miejsce określone w żądaniu, listę pobliskich punktów orientacyjnych i ich odległość od tego miejsca oraz listę obszarów i ich relację do tego miejsca:

  {
    "places": [
      {
        "displayName": {
          "text": "Westfield Valley Fair",
          "languageCode": "en"
        },
        "addressDescriptor": {
          "landmarks": [
            {
              "name": "places/ChIJ62_oCR7Lj4AR_MGWkSPotD4",
              "placeId": "ChIJ62_oCR7Lj4AR_MGWkSPotD4",
              "displayName": {
                "text": "Nordstrom",
                "languageCode": "en"
              },
              "types": [
                "clothing_store",
                "department_store",
                "establishment",
                "point_of_interest",
                "shoe_store",
                "store"
              ],
              "straightLineDistanceMeters": 114.76984,
              "travelDistanceMeters": 114.261856
            },
            {
              "name": "places/ChIJgexMlR_Lj4ARiKCKuhNnjn0",
              "placeId": "ChIJgexMlR_Lj4ARiKCKuhNnjn0",
              "displayName": {
                "text": "Valley Fair Mall Eyexam of CA",
                "languageCode": "en"
              },
              "types": [
                "establishment",
                "health",
                "point_of_interest"
              ],
              "straightLineDistanceMeters": 131.62566,
              "travelDistanceMeters": 237.33253
            },
            {
              "name": "places/ChIJWWIlNx7Lj4ARpe1E0ob-_GI",
              "placeId": "ChIJWWIlNx7Lj4ARpe1E0ob-_GI",
              "displayName": {
                "text": "Din Tai Fung",
                "languageCode": "en"
              },
              "types": [
                "establishment",
                "food",
                "point_of_interest",
                "restaurant"
              ],
              "straightLineDistanceMeters": 110.0775,
              "travelDistanceMeters": 171.41951
            },
            {
              "name": "places/ChIJwyfPQx7Lj4AR7bYI2A2Yc54",
              "placeId": "ChIJwyfPQx7Lj4AR7bYI2A2Yc54",
              "displayName": {
                "text": "Abercrombie & Fitch",
                "languageCode": "en"
              },
              "types": [
                "clothing_store",
                "establishment",
                "point_of_interest",
                "shoe_store",
                "store"
              ],
              "spatialRelationship": "DOWN_THE_ROAD",
              "straightLineDistanceMeters": 53.620117,
              "travelDistanceMeters": 2.4578214
            },
            {
              "name": "places/ChIJpycNQx7Lj4ARjhXw3PrM_kU",
              "placeId": "ChIJpycNQx7Lj4ARjhXw3PrM_kU",
              "displayName": {
                "text": "Hollister Co.",
                "languageCode": "en"
              },
              "types": [
                "clothing_store",
                "establishment",
                "point_of_interest",
                "shoe_store",
                "store"
              ],
              "spatialRelationship": "DOWN_THE_ROAD",
              "straightLineDistanceMeters": 56.53726,
              "travelDistanceMeters": 15.418246
            }
          ],
          "areas": [
            {
              "name": "places/ChIJb3F-EB7Lj4ARnHApQ_Hu1gI",
              "placeId": "ChIJb3F-EB7Lj4ARnHApQ_Hu1gI",
              "displayName": {
                "text": "Westfield Valley Fair",
                "languageCode": "en"
              },
              "containment": "WITHIN"
            },
            {
              "name": "places/ChIJXYuykB_Lj4AR1Ot8nU5q26Q",
              "placeId": "ChIJXYuykB_Lj4AR1Ot8nU5q26Q",
              "displayName": {
                "text": "Valley Fair",
                "languageCode": "en"
              },
              "containment": "WITHIN"
            },
            {
              "name": "places/ChIJtYoUX2DLj4ARKoKOb1G0CpM",
              "placeId": "ChIJtYoUX2DLj4ARKoKOb1G0CpM",
              "displayName": {
                "text": "Central San Jose",
                "languageCode": "en"
              },
              "containment": "OUTSKIRTS"
            }
          ]
        }
      },
  /.../
  }

Wypróbuj

Narzędzie APIs Explorer umożliwia wysyłanie przykładowych żądań, dzięki czemu możesz zapoznać się z interfejsem API i jego opcjami.

  1. Po prawej stronie strony kliknij ikonę interfejsu API api.

  2. Opcjonalnie edytuj parametry żądania.

  3. Kliknij przycisk Wykonaj. W oknie dialogowym wybierz konto, z którego chcesz wysłać prośbę.

  4. W panelu APIs Explorer kliknij ikonę pełnego ekranu fullscreen, aby rozwinąć okno narzędzia.