Place Search

Place Search memperkenalkan Text Search (Baru) yang menerima kueri teks dan menampilkan serangkaian tempat.

Text Search (Baru) menampilkan informasi tentang serangkaian tempat berdasarkan suatu string — misalnya "pizza di Bandung" atau "toko sepatu di dekat Solo" atau "Jl. Rajawali 3". Layanan ini merespons dengan daftar tempat yang cocok dengan string teks dan bias lokasi yang telah ditetapkan. Text Search (Baru) memungkinkan Anda menelusuri tempat berdasarkan jenis, memfilter menggunakan kriteria seperti jam buka dan rating, serta membatasi atau membiaskan hasil ke lokasi tertentu. Text Search (Baru) adalah fitur yang sepenuhnya baru, serta menawarkan performa dan kualitas data yang lebih baik dibandingkan dengan Places API yang lama.

Prasyarat

Untuk menggunakan Text Search (Baru), Anda harus mengaktifkan "Places API (Baru)" di project Google Cloud Anda. Lihat bagian Memulai untuk mengetahui detailnya.

Sorotan Text Search

Text Search (Baru) memiliki peningkatan berikut:

  • Filter penelusuran tambahan, yang menawarkan banyak jenis tempat baru serta kemampuan untuk memfilter berdasarkan rating minimum.
  • Penyamaran kolom kini didukung.
  • Kolom Tempat kini mencakup rating dan ulasan.

Menemukan tempat berdasarkan kueri teks

Panggil searchByText untuk menampilkan daftar tempat dari kueri teks atau nomor telepon. Jika kuerinya berisi nomor telepon, parameter region harus ditetapkan ke region yang sama dengan region domain yang mengirimkan permintaan. Misalnya, jika Anda menggunakan nomor telepon untuk menelusuri sebuah tempat di Jepang, dan domain yang mengirimkan permintaan adalah jp, Anda harus menetapkan parameter region ke 'jp'. Jika region dihapus dari permintaan, API secara default akan ditetapkan ke region Amerika Serikat ('us').

Gunakan parameter fields untuk menentukan daftar yang dipisahkan koma yang berisi satu atau beberapa kolom data dalam format camel case.

Contoh berikut menunjukkan pemanggilan searchByText untuk menemukan tempat berdasarkan kueri teks.

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();