Migrer vers la nouvelle interface Nearby Search

Développeurs de l'Espace économique européen (EEE)

Cette page explique les différences entre la recherche à proximité telle qu'elle est utilisée dans la Place classe (nouvelle) et la PlacesService (ancienne), et fournit quelques extraits de code à des fins de comparaison.

  • L'ancienne PlacesService comporte une méthode nearbySearch() qui vous permet de rechercher des lieux dans une zone spécifiée par mot clé ou par type.
  • La classe Place comporte une méthode searchNearby() qui vous permet de rechercher des lieux dans une zone spécifiée par type de lieu, en utilisant une sélection étendue de champs de données de lieu et de types de lieux pour une plus grande flexibilité.

Le tableau suivant répertorie certaines des principales différences entre les méthodes de recherche à proximité de la classe Place et PlacesService :

PlacesService (ancienne) Place (nouvelle)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
Nécessite l'utilisation d'un rappel pour gérer l'objet de résultats et google.maps.places.PlacesServiceStatus réponse. Utilise des promesses et fonctionne de manière asynchrone.
Nécessite une vérification PlacesServiceStatus. Aucune vérification d'état requise, peut utiliser la gestion des erreurs standard. En savoir plus.
Ne prend en charge que le biais de localisation. Prend en charge le biais de localisation et la restriction de localisation.
Renvoie tous les champs de données disponibles (un sous-ensemble des champs acceptés) ; ne peut pas être limité à des champs spécifiques. Ne renvoie que les champs de données de lieu demandés ; la Place classe offre une sélection de champs étendue et régulièrement mise à jour.
Limité à un ensemble fixe de types de lieux. Accédez à une sélection étendue et régulièrement mise à jour de types de lieux.
Recherche textuelle acceptée avec le mot clé. La recherche textuelle n'est pas acceptée. Utilisez plutôt Text Search (nouvelle version).

Comparaison de code

Cette section compare le code des méthodes de recherche à proximité pour illustrer les différences entre Places Service et la classe Place. Les extraits de code montrent le code requis sur chaque API respective pour effectuer une requête de recherche textuelle.

Nearby Search (ancienne)

L'ancienne Nearby Search vous permet de rechercher des lieux dans une zone spécifiée par mot clé ou par type. Il n'existe aucun moyen de limiter les recherches à l'aide de champs de données de lieu, de sorte que tous les champs disponibles sont renvoyés avec chaque requête. L'extrait suivant montre l'appel de nearbySearch() pour renvoyer des informations sur les restaurants de Sydney, en Australie. La requête est synchrone, utilise un rappel et inclut une vérification conditionnelle obligatoire sur PlacesServiceStatus.

let map;
let service;

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

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

  const request = {
    location: sydney,
    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]);
    }
  }
}

// Helper function to create markers.
function createMarker(place) {
  if (!place.geometry || !place.geometry.location) return;

  const marker = new google.maps.Marker({
    map,
    position: place.geometry.location,
    title: place.name,
  });
}

En savoir plus

Nearby Search (nouvelle version)

La nouvelle version de Nearby Search améliore la précédente de la manière suivante :

  • Possibilité de spécifier les champs de données de lieu à renvoyer.
  • Utilisation de promesses qui permettent un fonctionnement asynchrone.
  • Plus besoin de vérifier l'état de PlacesService ; la gestion des erreurs standard peut être utilisée à la place.

L'extrait de code suivant montre une fonction qui effectue une requête Nearby Search pour les restaurants. Cet exemple montre comment utiliser l'option rankPreference pour classer les résultats de recherche par popularité (dans la version précédente, le classement est spécifié à l'aide de l'option rankBy). Étant donné que la méthode searchNearby() utilise l'opérateur await, elle ne peut être utilisée que dans une fonction async.

async function nearbySearch() {
  // Restrict within the map viewport.
  let center = new google.maps.LatLng(52.369358, 4.889258);
  const request = {
    // Required parameters.
    fields: ["displayName", "location", "businessStatus"],
    locationRestriction: {
      center: center,
      radius: 500,
    },
    // Optional parameters.
    includedPrimaryTypes: ["restaurant"],
    maxResultCount: 5,
    rankPreference: google.maps.places.SearchNearbyRankPreference.POPULARITY,
    language: "en-US",
    region: "us",
  };

  const { places } = await google.maps.places.Place.searchNearby(request);

  if (places.length) {
    console.log(places);

    // Create a new bounds, which will be extended with each result.
    const bounds = new google.maps.LatLngBounds();

    // Loop through and get all the results.
    places.forEach((place) => {
      const markerView = new google.maps.marker.AdvancedMarkerElement({
        map,
        position: place.location,
        title: place.displayName,
      });

      bounds.extend(place.location);
      console.log(place);
    });
    map.fitBounds(bounds);
  } else {
    console.log("No results");
  }
}

En savoir plus