Bu sayfada, Place
sınıfında (yeni) kullanılan yakındaki yerleri arama ile PlacesService
(eski) arasındaki farklar açıklanmakta ve karşılaştırma için bazı kod snippet'leri verilmektedir.
- Eski
PlacesService
, belirli bir alandaki yerleri anahtar kelimeye veya türe göre aramanıza olanak tanıyan birnearbySearch()
yöntemine sahiptir. Place
sınıfında, daha fazla esneklik için yer verileri alanlarının ve yer türlerinin genişletilmiş bir seçimini kullanarak belirli bir alandaki yerleri yer türüne göre aramanıza olanak tanıyan birsearchNearby()
yöntemi bulunur.
Aşağıdaki tabloda, Place
sınıfı ile PlacesService
arasındaki yakındaki arama yöntemlerindeki temel farklılıklardan 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 geri çağırma işlevinin kullanılması gerekir. |
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 edinin. |
Yalnızca konum önyargısını destekler. | Konum önyargısı ve konum kısıtlaması desteklenir. |
Mevcut tüm veri alanlarını (desteklenen alanların bir alt kümesi) döndürür; belirli alanlarla sınırlanamaz. | 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. |
Belirli bir yer türü grubuyla sınırlıdır. | Genişletilmiş ve düzenli olarak güncellenen yer türleri seçimine erişin. |
Anahtar kelime ile desteklenen metin tabanlı arama. | Metin tabanlı arama desteklenmez. Bunun yerine Metin Arama (Yeni)'yı kullanın. |
Kod karşılaştırması
Bu bölümde, Yakınlardaki Arama yöntemlerinin kodu karşılaştırılarak Places Hizmeti ile Place sınıfı arasındaki farklar gösterilmektedir. Kod snippet'lerinde, metin tabanlı bir arama isteği yapmak için ilgili API'lerde gereken kod gösterilir.
Yakında Arama (Eski)
Eski Yakındaki 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 nasıl çağrıldığı gösterilmektedir. İstek senkrondur, geri çağırma işlevini 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ümüne göre aşağıdaki iyileştirmeleri sunar:
- Hangi yer verisi alanlarının döndürüleceğini belirtme özelliği.
- Eşzamansız işlem yapmayı sağlayan Promises'in kullanılması.
PlacesService
durumunu kontrol etmenize gerek yoktur. Bunun yerine standart hata işleme kullanılabilir.
Aşağıdaki kod snippet'inde, restoranlar için bir Yakınlarda Arama isteği oluşturan 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ılması gösterilmektedir (önceki sürümde sıralama rankBy
seçeneği kullanılarak belirtiliyordu). 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
- Tam örnek koda bakın
- Yakındaki Arama (Yeni) ile ilgili dokümanları inceleyin.
searchNearby()
referansını inceleyin.