Zur neuen Nearby Search migrieren

Entwickler im Europäischen Wirtschaftsraum (EWR)

Auf dieser Seite werden die Unterschiede zwischen der Nearby Search-Funktion in der Klasse Place (neu) und in PlacesService (alt) erläutert. Außerdem finden Sie hier einige Code-Snippets zum Vergleich.

  • Die alte PlacesService-Klasse hat eine nearbySearch()-Methode, mit der Sie anhand eines Suchbegriffs oder Typs nach Orten innerhalb eines bestimmten Bereichs suchen können.
  • Die Place-Klasse hat eine searchNearby()-Methode, mit der Sie anhand des Ortstyps nach Orten innerhalb eines bestimmten Bereichs suchen können. Dabei steht Ihnen eine erweiterte Auswahl an Ortsdatenfeldern und Ortstypen zur Verfügung, um die Suche flexibler zu gestalten.

In der folgenden Tabelle sind einige der wichtigsten Unterschiede zwischen den Nearby Search-Methoden der Klasse Place und PlacesService aufgeführt:

PlacesService (alt) Place (neu)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
Erfordert die Verwendung eines Callbacks, um das Ergebnisobjekt und google.maps.places.PlacesServiceStatus Antwort zu verarbeiten. Verwendet Promises und funktioniert asynchron.
Erfordert eine PlacesServiceStatus-Prüfung. Keine Statusprüfung erforderlich, Standardfehlerbehandlung kann verwendet werden. Weitere Informationen.
Unterstützt nur die Standortgewichtung. Unterstützt Standortgewichtung und Standortbeschränkung.
Gibt alle verfügbaren Datenfelder zurück (eine Teilmenge der unterstützten Felder); kann nicht auf bestimmte Felder beschränkt werden. Gibt nur die angeforderten Ortsdatenfelder zurück. Die Place Klasse bietet eine erweiterte und regelmäßig aktualisierte Auswahl an Feldern.
Beschränkt auf eine feste Anzahl von Ortstypen. Zugriff auf eine erweiterte und regelmäßig aktualisierte Auswahl an Ortstypen.
Unterstützt textbasierte Suche mit dem Suchbegriff. Textbasierte Suche wird nicht unterstützt. Verwenden Sie stattdessen die Text Search (New).

Codevergleich

In diesem Abschnitt wird Code für Nearby Search-Methoden verglichen, um die Unterschiede zwischen dem Places Service und der Klasse „Place“ zu veranschaulichen. Die Code-Snippets zeigen den Code, der für die jeweilige API erforderlich ist, um eine textbasierte Suchanfrage zu senden.

Nearby Search (alt)

Mit der alten Nearby Search-Funktion können Sie anhand eines Suchbegriffs oder Typs nach Orten innerhalb eines bestimmten Bereichs suchen. Es gibt keine Möglichkeit, Suchanfragen mithilfe von Ortsdatenfeldern einzuschränken. Daher werden mit jeder Anfrage alle verfügbaren Felder zurückgegeben. Das folgende Snippet zeigt den Aufruf von nearbySearch(), um Informationen zu Restaurants in Sydney, Australien, zurückzugeben. Die Anfrage ist synchron, verwendet einen Callback und enthält eine erforderliche bedingte Prüfung von 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,
  });
}

Weitere Informationen

Nearby Search (neu)

Die neue Version der Nearby Search-Funktion bietet folgende Verbesserungen:

  • Sie können angeben, welche Ortsdatenfelder zurückgegeben werden sollen.
  • Die Verwendung von Promises ermöglicht den asynchronen Betrieb.
  • Es ist nicht erforderlich, den Status von PlacesService zu prüfen. Stattdessen kann die Standardfehlerbehandlung verwendet werden.

Das folgende Code-Snippet zeigt eine Funktion, die eine Nearby Search-Anfrage für Restaurants sendet. In diesem Beispiel wird die Option rankPreference verwendet, um Suchergebnisse nach Beliebtheit zu sortieren. In der vorherigen Version wurde die Sortierung mit der Option rankBy angegeben. Da die Methode searchNearby() den Operator await verwendet, kann sie nur innerhalb einer async-Funktion verwendet werden.

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

Weitere Informationen