Place Search

Mit „Place Search“ wurde die Methode „Text Search (New)“ eingeführt, bei der per Textabfrage mehrere Orte zurückgegeben werden.

Bei Verwendung von „Text Search (New)“ werden Informationen zu verschiedenen Orten auf Grundlage eines Textstrings zurückgegeben, z. B. „Pizza in München“, „Schuhgeschäfte in der Nähe von Hamburg“ oder „Hauptstraße 123“. Der Dienst gibt eine Liste mit Orten zurück, die dem Textstring und ggf. der festgelegten Standortgewichtung entsprechen. Mit „Text Search (New)“ können Sie anhand eines Typs nach Orten suchen. Die Ergebnisse lassen sich nach Kriterien wie Öffnungszeiten und Bewertung filtern. Außerdem können Sie sie auf einen bestimmten Standort beschränken oder eine entsprechende Gewichtung festlegen. Die Methode „Text Search (New)“ wurde komplett neu entwickelt. Sie bietet eine noch bessere Leistung und Datenqualität als ältere Places APIs.

Voraussetzungen

Wenn Sie „Text Search (New)“ verwenden möchten, müssen Sie „Places API (New)“ in Ihrem Google Cloud-Projekt aktivieren. Weitere Informationen

Highlights der „Text Search“

Bei „Text Search (New)“ wurden folgende Verbesserungen vorgenommen:

  • Es gibt zusätzliche Suchfilter mit vielen neuen Ortstypen sowie die Möglichkeit, nach der schlechtesten Bewertung zu filtern.
  • Die Maskierung von Feldern wird jetzt unterstützt.
  • Felder mit Ortsdaten enthalten jetzt Bewertungen und Rezensionen.

Orte per Textabfrage suchen

Rufen Sie searchByText auf, um mithilfe einer Textabfrage oder Telefonnummer eine Liste von Orten zu erhalten. Falls die Abfrage eine Telefonnummer enthält, muss der Regionsparameter auf dieselbe Region wie in der anfragenden Domain festgelegt werden. Wenn Sie beispielsweise mit einer Telefonnummer nach einem Ort in Japan suchen und die anfragende Domain jp ist, müssen Sie den region-Parameter auf „jp“ festlegen. Wenn region in der Anfrage weggelassen wird, wird standardmäßig die Region „USA“ („us“) verwendet.

Verwenden Sie den Parameter fields, um eine durch Kommas getrennte Liste eines oder mehrerer Datenfelder in der Camel-Case-Schreibweise anzugeben.

Im folgenden Beispiel sehen Sie, wie searchByText aufgerufen wird, um Orte per Textabfrage zu finden.

TypeScript

let map;
let center;

async function initMap() {
    const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary;

    center = {lat: 37.4161493, lng: -122.0812166};
    map = new Map(document.getElementById('map') as HTMLElement, {
        center: center,
        zoom: 14,
        // ...
    });

    findPlaces();
}

async function findPlaces() {
    const { Place } = await google.maps.importLibrary("places") as google.maps.PlacesLibrary;
    //@ts-ignore
    const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary;
    const request = {
        textQuery: 'Tacos in Mountain View',
        fields: ['displayName', 'location', 'businessStatus'],
        includedType: 'restaurant',
        isOpenNow: true,
        language: 'en-US',
        maxResultCount: 7,
        minRating: 3.2,
        region: 'us',
        useStrictTypeFiltering: false,
    };

    //@ts-ignore
    const { places } = await Place.searchByText(request);

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

        const { LatLngBounds } = await google.maps.importLibrary("core") as google.maps.CoreLibrary;
        const bounds = new LatLngBounds();

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

            bounds.extend(place.location);
            console.log(place);
        });

        map.setCenter(bounds.getCenter());

    } else {
        console.log('No results');
    }
}

initMap();

JavaScript

let map;
let center;

async function initMap() {
  const { Map } = await google.maps.importLibrary("maps");

  center = { lat: 37.4161493, lng: -122.0812166 };
  map = new Map(document.getElementById("map"), {
    center: center,
    zoom: 14,
    // ...
  });
  findPlaces();
}

async function findPlaces() {
  const { Place } = await google.maps.importLibrary("places");
  //@ts-ignore
  const { AdvancedMarkerElement } = await google.maps.importLibrary("marker");
  const request = {
    textQuery: "Tacos in Mountain View",
    fields: ["displayName", "location", "businessStatus"],
    includedType: "restaurant",
    isOpenNow: true,
    language: "en-US",
    maxResultCount: 7,
    minRating: 3.2,
    region: "us",
    useStrictTypeFiltering: false,
  };
  //@ts-ignore
  const { places } = await Place.searchByText(request);

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

    const { LatLngBounds } = await google.maps.importLibrary("core");
    const bounds = new LatLngBounds();

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

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

initMap();