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 birnearbySearch()yöntemine sahiptir. Placesınıfında, belirli bir alandaki yerleri yer türüne göre aramanıza olanak tanıyan birsearchNearby()yöntemi bulunur. Bu yöntemde, daha fazla esneklik için yer verisi alanlarının ve yer türlerinin genişletilmiş bir seçimi kullanılır.
Aşağıdaki tabloda, yakındaki arama yöntemlerinde Place sınıfı ile PlacesService arasındaki 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 geri çağırma işlevi 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 |
| Yalnızca konum önyargısını destekler. | Konum önyargısı ve konum kısıtlaması desteklenir. |
| 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. |
| Anahtar kelime 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'lerinde, metin tabanlı bir arama isteği yapmak için ilgili API'lerde gereken kod gösterilir.
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ı.
PlacesServicedurumunu 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ıldığı 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 kodu inceleyin
- Yakındaki Arama (Yeni) dokümanlarına göz atın.
searchNearby()referansına bakın.