Recherche à proximité (nouveau)

Sélectionnez une plate-forme : Android iOS JavaScript Services Web

Une recherche à proximité (nouveau) prend un ou plusieurs types de lieux et renvoie une liste de lieux correspondants dans la dans la zone spécifiée. Masque de champ spécifiant un ou plusieurs types de données est obligatoire. Nearby Search (nouveau) n'accepte que les requêtes POST.

APIs Explorer vous permet d'effectuer des requêtes en direct afin que vous puissiez vous familiariser avec l'API et la Options d'API:

Essayer

Découvrez la vidéo interactive démo pour afficher les résultats Nearby Search (nouveau) sur une carte.

Requêtes Nearby Search (nouvelle version)

Une requête Nearby Search (New) est une requête HTTP POST adressée à une URL dans l'objet formulaire:

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

Transmettez tous les paramètres dans le corps de la requête JSON ou dans les en-têtes dans le cadre de la méthode requête POST. Exemple :

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

Réponses Nearby Search (nouvelle)

Nearby Search (nouveau) renvoie un JSON comme réponse. Dans la réponse :

  • Le tableau places contient tous les lieux correspondants.
  • Chaque lieu du tableau est représenté par un Place . L'objet Place contient des informations détaillées sur un seul à un emplacement.
  • Le champ FieldMask transmis dans la requête spécifie la liste des champs. renvoyées dans l'objet Place.

L'objet JSON complet se présente sous la forme suivante:

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

Paramètres obligatoires

  • FieldMask

    Spécifiez la liste des champs à renvoyer dans la réponse en créant un masque de champ de réponse. Transmettre le masque de champ de réponse à la méthode à l'aide du paramètre d'URL $fields ou fields, ou à l'aide de l'en-tête HTTP X-Goog-FieldMask Il n'existe pas de liste par défaut des champs renvoyés dans la réponse. Si vous omettez le masque de champ, la méthode renvoie une erreur.

    Le masquage du champ est une bonne pratique de conception pour vous assurer que vous ne demandez pas des données inutiles, ce qui permet d'éviter les délais de traitement et frais facturés.

    Spécifiez une liste de types de données de lieu à renvoyer, séparés par une virgule. Par exemple : pour récupérer le nom à afficher et l'adresse du lieu.

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

    Utilisez * pour récupérer tous les champs.

    X-Goog-FieldMask: *

    Renseignez un ou plusieurs des champs suivants:

    • Les champs suivants déclenchent le SKU Nearby Search (Basic):

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

      . * Le champ places.name contient le nom de ressource du lieu sous la forme: places/PLACE_ID. Utilisez places.displayName pour accéder au nom textuel du lieu.

    • Les champs suivants déclenchent le SKU Nearby Search (Advanced):

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

    • Les champs suivants déclenchent le SKU Nearby Search (Preferred):

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

  • locationRestriction

    Région dans laquelle effectuer la recherche, spécifiée sous la forme d'un cercle, définie par le point central et le rayon en mètres. Le rayon doit être compris entre 0,0 et 50 000,0 inclus. Le rayon par défaut est de 0,0. Vous devez définissez-la dans votre requête sur une valeur supérieure à 0,0.

    Par exemple :

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

Paramètres facultatifs

  • inclusTypes/excludedTypes, inclusPrimaryTypes/excludedPrimaryTypes

    Permet de spécifier une liste de types à partir des types Tableau A utilisé pour filtrer les résultats de recherche. Vous pouvez spécifier jusqu'à 50 types dans chaque catégorie de restriction de type.

    Un lieu ne peut avoir qu'un seul type principal issu des types Le Tableau A est associé aux pour l'activer. Par exemple, le type principal peut être "mexican_restaurant" ou "steak_house". Utilisez includedPrimaryTypes et excludedPrimaryTypes pour filtrer les résultats. le type principal d'un lieu.

    Un lieu peut également avoir plusieurs valeurs de type à partir des types. Tableau A qui lui est associée. Par exemple, un restaurant peut posséder les types suivants: "seafood_restaurant", "restaurant", "food" "point_of_interest", "establishment". Utiliser includedTypes et excludedTypes pour filtrer les résultats sur la liste des types associés à un lieu.

    Lorsque vous spécifiez un type principal général, tel que "restaurant" ou "hotel", la réponse peut contenir des lieux avec un type principal plus spécifique que celui spécifié. Par exemple, vous souhaitez inclure un type principal "restaurant" La réponse peut alors contenir des lieux dont le type principal est "restaurant", mais la réponse peut également contenir des lieux avec une définition type principal, tel que "chinese_restaurant" ou "seafood_restaurant".

    Si une recherche est spécifiée avec plusieurs restrictions de type, seuls les lieux qui satisfont à toutes les restrictions sont renvoyées. Par exemple, si vous spécifiez {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}, le Les lieux renvoyés proposent des services associés à "restaurant", mais ne sont pas principalement proposés en tant que "steak_house".

    includedTypes

    Liste des types de lieux à rechercher dans le Tableau A, séparés par une virgule. Si ce paramètre est omis, des lieux de tous types sont renvoyés.

    excludedTypes

    Liste des types de lieux séparés par une virgule du Tableau A à exclure d'une recherche.

    Si vous spécifiez à la fois includedTypes ( "school", par exemple) et excludedTypes (par exemple, "primary_school") dans la requête, le paramètre La réponse inclut des lieux classés dans la catégorie "school", mais pas dans la catégorie "primary_school" La réponse inclut des lieux correspondant à au moins un des éléments suivants : includedTypes et aucun excludedTypes.

    S'il existe des types en conflit, par exemple si un type apparaît à la fois dans includedTypes et excludedTypes, une erreur INVALID_REQUEST est renvoyée.

    includedPrimaryTypes

    Liste des principaux types de lieux, séparés par une virgule du Tableau A, à inclure lors d'une recherche.

    excludedPrimaryTypes

    Liste des principaux types de lieux à exclure, séparés par une virgule, du Tableau A à partir d'une recherche.

    S'il existe des types principaux en conflit, par exemple un type apparaissant à la fois dans includedPrimaryTypes et excludedPrimaryTypes, un L'erreur INVALID_ARGUMENT est renvoyée.

  • languageCode

    Langue dans laquelle les résultats doivent être renvoyés.

    • Consultez la liste des langues acceptées. Google, souvent met à jour les langues prises en charge, cette liste n'est donc peut-être pas exhaustive.
    • Si languageCode n'est pas fourni, l'API est définie par défaut sur en. Si si vous spécifiez un code de langue non valide, l'API renvoie un INVALID_ARGUMENT .
    • L'API s'efforce de fournir une adresse postale lisible à la fois pour l'utilisateur locaux. Pour atteindre cet objectif, il renvoie les adresses postales dans la langue locale, translittéré en script lisible par l'utilisateur si nécessaire, en tenant compte de la langue. Toutes les autres adresses sont affichées dans la langue préférée. Les composants d'adresse sont tous renvoyés dans la même langue, choisie à partir du premier composant.
    • Si un nom n'est pas disponible dans la langue préférée, l'API utilise le nom correspondant le plus proche.
    • La langue préférée a une petite influence sur l'ensemble des résultats choisis par l'API. et l'ordre dans lequel ils sont retournés. Le geocoder interprète les abréviations. en fonction de la langue, comme les abréviations du type de rue ou les synonymes. qui peuvent être valides dans une langue, mais pas dans une autre.
  • maxResultCount

    Spécifie le nombre maximal de résultats de lieu à renvoyer. Doit être compris entre 1 et 20 (par défaut) inclus.

  • rankPreference

    Type de classement à utiliser. Si ce paramètre est omis, les résultats sont classés en fonction de leur popularité. Il peut s'agir de l'un des éléments suivants:

    • POPULARITY (par défaut) Trie les résultats en fonction de leur popularité.
    • DISTANCE Trie les résultats par ordre croissant en fonction de leur distance par rapport à la à l'emplacement spécifié.
  • regionCode

    Code régional utilisé pour mettre en forme la réponse, spécifié sous la forme d'une CLDR à deux caractères. Il n'existe pas de valeur par défaut.

    Si le nom de pays du champ formattedAddress dans la réponse correspond au regionCode, le code pays est omis de formattedAddress. Ce paramètre n'a aucun effet sur adrFormatAddress, qui inclut toujours le pays ou sur shortFormattedAddress, qui ne l'inclut jamais.

    La plupart des codes CLDR sont identiques les codes ISO 3166-1, à quelques exceptions près. Par exemple, le ccTLD au Royaume-Uni est "uk" (.co.uk), tandis que son code ISO 3166-1 est "gb". (d'un point de vue technique, du Royaume-Uni de Grande-Bretagne et d'Irlande du Nord). Ce paramètre peut avoir un impact sur les résultats en fonction du droit applicable.

Exemples de recherche à proximité (nouveau)

Rechercher des lieux d'un type donné

L'exemple suivant montre une requête Nearby Search (New) pour l'affichage Noms de tous les restaurants situés dans un rayon de 500 mètres, défini par 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

Notez que l'en-tête X-Goog-FieldMask indique que la réponse contient les champs de données suivants: places.displayName. La réponse se présente sous la forme suivante:

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

Ajoutez d'autres types de données au masque de champ pour renvoyer des informations supplémentaires. Par exemple, ajoutez places.formattedAddress,places.types,places.websiteUri pour inclure le l'adresse, le type et l'adresse Web du restaurant dans la réponse:

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

La réponse se présente désormais sous la forme suivante:

{
  "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"
      }
    },
...
}

Rechercher des lieux de différents types

L'exemple suivant montre une requête Nearby Search (New) pour le paramètre les noms à afficher de tous les magasins de proximité et de spiritueux dans un rayon de 1 000 mètres circle spécifié:

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
Cet exemple ajoute places.primaryType et places.types au masque de champ. La réponse inclut ainsi des informations sur le type de chaque lieu, ce qui facilite la sélection le lieu approprié à partir des résultats.

L'exemple suivant montre une requête Nearby Search (New) pour tous les lieux de type "school", à l'exception de tous les lieux de type "primary_school", ce qui classe les résultats par distance:

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

Rechercher tous les lieux à proximité d'une zone, classés par distance

L'exemple suivant illustre une requête Nearby Search (New) pour des lieux près d'un point du centre-ville de San Francisco. Dans cet exemple, vous incluez le rankPreference pour classer les résultats par distance:

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

Essayer

APIs Explorer vous permet de créer des exemples de requêtes afin de vous familiariser avec l'API et ses options.

  1. Sélectionnez l'icône API Développez APIs Explorer., sur le côté droit de la page.
  2. Vous pouvez également développer Afficher les paramètres standards et définir Le paramètre fields au masque de champ.
  3. Vous pouvez également modifier le corps de la requête.
  4. Sélectionnez le bouton Execute (Exécuter). Dans la fenêtre pop-up, sélectionnez le compte à utiliser pour effectuer la demande.
  5. Dans le panneau APIs Explorer, sélectionnez l'icône de développement, Développez APIs Explorer., pour développer la fenêtre de l'explorateur d'API.