Bermigrasi ke Nearby Search versi baru

Developer Wilayah Ekonomi Eropa (EEA)

Halaman ini menjelaskan perbedaan antara penelusuran di sekitar seperti yang digunakan dalam kelas Place (baru) dan PlacesService (lama), serta memberikan beberapa cuplikan kode untuk perbandingan.

  • PlacesService lama memiliki metode nearbySearch(), yang memungkinkan Anda menelusuri tempat dalam area tertentu berdasarkan kata kunci atau jenis.
  • Class Place memiliki metode searchNearby() yang memungkinkan Anda menelusuri tempat dalam area tertentu menurut jenis tempat, dengan memanfaatkan pilihan kolom data tempat dan jenis tempat yang diperluas untuk fleksibilitas yang lebih besar.

Tabel berikut mencantumkan beberapa perbedaan utama dalam metode penelusuran di sekitar antara class Place dan PlacesService:

PlacesService (Lama) Place (Baru)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
Memerlukan penggunaan callback untuk menangani objek hasil dan respons google.maps.places.PlacesServiceStatus. Menggunakan Promise, dan berfungsi secara asinkron.
Memerlukan pemeriksaan PlacesServiceStatus. Tidak ada pemeriksaan status yang diperlukan, dapat menggunakan penanganan error standar. Pelajari lebih lanjut.
Hanya mendukung bias lokasi. Mendukung bias lokasi dan pembatasan lokasi.
Menampilkan semua kolom data yang tersedia (sub-kumpulan kolom yang didukung); tidak dapat dibatasi ke kolom tertentu. Hanya menampilkan kolom data tempat yang diminta; class Place menawarkan pilihan kolom yang diperluas dan diperbarui secara berkala.
Terbatas pada kumpulan tetap jenis tempat. Akses pilihan jenis tempat yang diperluas dan diperbarui secara rutin.
Mendukung penelusuran berbasis teks dengan kata kunci. Penelusuran berbasis teks tidak didukung, gunakan Text Search (Baru).

Perbandingan kode

Bagian ini membandingkan kode untuk metode penelusuran di sekitar guna menggambarkan perbedaan antara Places Service dan class Place. Cuplikan kode menunjukkan kode yang diperlukan di setiap API masing-masing untuk membuat permintaan penelusuran berbasis teks.

Nearby Search (Lama)

Nearby Search lama memungkinkan Anda menelusuri tempat dalam area yang ditentukan dengan kata kunci atau jenis. Tidak ada cara untuk membatasi penelusuran menggunakan kolom data tempat, sehingga semua kolom yang tersedia ditampilkan dengan setiap permintaan. Cuplikan berikut menunjukkan pemanggilan nearbySearch() untuk menampilkan informasi tentang restoran di Sydney, Australia. Permintaan bersifat sinkron, menggunakan callback, dan menyertakan pemeriksaan bersyarat yang diperlukan pada 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,
  });
}

Pelajari lebih lanjut

Nearby Search (Baru)

Nearby Search versi baru lebih baik dari versi sebelumnya dalam hal berikut:

  • Kemampuan untuk menentukan kolom data tempat yang akan ditampilkan.
  • Penggunaan Promise yang memungkinkan operasi asinkron.
  • Tidak perlu memeriksa status PlacesService; penanganan error standar dapat digunakan sebagai gantinya.

Cuplikan kode berikut menunjukkan fungsi yang membuat permintaan Nearby Search untuk restoran. Contoh ini menunjukkan penggunaan opsi rankPreference untuk memberi peringkat hasil penelusuran berdasarkan popularitas (dalam versi sebelumnya, peringkat ditentukan menggunakan opsi rankBy). Karena metode searchNearby() menggunakan operator await, metode ini hanya dapat digunakan di dalam fungsi 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");
  }
}

Pelajari lebih lanjut