Yeni Yakında Arama'ya geçiş

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Bu sayfada, Place sınıfında (yeni) kullanılan yakındaki yerleri arama ile PlacesService sınıfında (eski) kullanılan yakındaki yerleri arama arasındaki farklar açıklanmakta ve karşılaştırma için bazı kod snippet'leri verilmektedir.

  • Eski PlacesService, belirtilen bir alan içindeki yerleri anahtar kelimeye veya türe göre aramanıza olanak tanıyan bir nearbySearch() yöntemine sahiptir.
  • Place sınıfında, daha fazla esneklik için genişletilmiş yer veri alanları ve yer türleri seçeneğinden yararlanarak belirli bir alandaki yerleri yer türüne göre aramanıza olanak tanıyan bir searchNearby() yöntemi bulunur.

Aşağıdaki tabloda, Place sınıfı ile PlacesService arasındaki yakındaki yerleri arama yöntemlerindeki temel farklardan bazıları listelenmiştir:

PlacesService (Eski) Place (Yeni)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
Sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için bir geri çağırma işlevinin kullanılmasını gerektirir. Promises kullanır ve eşzamansız olarak çalışır.
PlacesServiceStatus kontrolü gerekir. Durum kontrolü gerekmez, standart hata işleme kullanılabilir. Daha fazla bilgi
Yalnızca konum önyargısını destekler. Konum tercihi ve konum kısıtlamasını destekler.
Kullanılabilir tüm veri alanlarını (desteklenen alanların bir alt kümesi) döndürür; belirli alanlarla sınırlandırılamaz. Yalnızca istenen yer verileri alanlarını döndürür. Place sınıfı, genişletilmiş ve düzenli olarak güncellenen bir alan seçimi sunar.
Sabit bir yer türleri grubuyla sınırlıdır. Genişletilmiş ve düzenli olarak güncellenen yer türleri seçimine erişin.
keyword ile metin tabanlı arama desteklenir. Metin tabanlı arama desteklenmez. Bunun yerine Metin Arama (Yeni)'yı kullanın.

Kod karşılaştırması

Bu bölümde, Places Service ile Place sınıfı arasındaki farkları göstermek için yakındaki arama yöntemlerinin kodu karşılaştırılmaktadır. Kod snippet'leri, metin tabanlı arama isteği göndermek için her bir API'de gereken kodu gösterir.

Yakında Arama (Eski)

Eski Yakında Arama özelliği, belirli bir alandaki yerleri anahtar kelimeye veya türe göre aramanıza olanak tanır. Aramaları yer verileri alanlarını kullanarak kısıtlamanın bir yolu yoktur. Bu nedenle, her istekte mevcut alanların tümü döndürülür. Aşağıdaki snippet'te, Avustralya'nın Sidney şehrindeki restoranlar hakkında bilgi döndürmek için nearbySearch() işlevinin çağrılması gösterilmektedir. İstek eşzamanlıdır, geri çağırma işlevi kullanır ve PlacesServiceStatus üzerinde gerekli bir koşullu kontrol içerir.

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

Daha fazla bilgi

Yakında Arama (Yeni)

Yakındaki Arama'nın yeni sürümü, önceki sürümden aşağıdaki yönlerden daha iyidir:

  • Hangi yer verisi alanlarının döndürüleceğini belirtme özelliği.
  • Eşzamansız işleme olanak tanıyan Promises kullanımı.
  • PlacesService durumunu kontrol etmeye gerek yoktur. Bunun yerine standart hata işleme kullanılabilir.

Aşağıdaki kod snippet'inde, restoranlar için Yakındaki Arama isteğinde bulunan bir işlev gösterilmektedir. Bu örnekte, arama sonuçlarını popülerliğe göre sıralamak için rankPreference seçeneğinin kullanımı gösterilmektedir (önceki sürümde sıralama rankBy seçeneği kullanılarak belirtilir). searchNearby() yöntemi await operatörünü kullandığından yalnızca bir async işlevinin içinde kullanılabilir.

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

Daha fazla bilgi