Places API, belirli bir yerle ilgili ayrıntılı bilgiler döndürebilir. Bu sayfada, Place
sınıfında (yeni) ve PlacesService
sınıfında (eski) kullanılan yer ayrıntıları arasındaki farklar açıklanmakta ve karşılaştırma için bazı kod snippet'leri sağlanmaktadır. Aşağıdaki tabloda, Place
sınıfı ile PlacesService
arasındaki yer ayrıntılarının kullanımındaki temel farklılıklardan bazıları listelenmiştir:
PlacesService (Eski) |
Place (Yeni) |
---|---|
getDetails() |
fetchFields() |
PlaceDetailsRequest |
FetchFieldsRequest |
Yöntemler, results nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için bir geri çağırma işlevinin kullanılmasını gerektirir. |
Promise'leri kullanır ve eşzamansız olarak çalışır. |
Yöntemler için PlacesServiceStatus kontrolü gerekir. |
Zorunlu durum kontrolü yoktur, standart hata işleme kullanılabilir. |
Yer veri alanları, küçük harf ve alt çizgi kullanılarak biçimlendirilir. | Yer veri alanları, büyük/küçük harf kullanımıyla biçimlendirilir. |
Sabit bir yer türü ve yer verisi alanı kümesiyle sınırlıdır. | Düzenli olarak güncellenen yer türleri ve yer veri alanları ile ilgili daha geniş bir seçim sunar. |
Kod karşılaştırması
Bu bölümde, Places Hizmeti ile Place sınıfı arasındaki farkları göstermek için iki benzer kod parçası karşılaştırılmıştır. Kod snippet'leri, yer ayrıntıları isteği yapmak için ilgili API'de gereken kodu gösterir ve ardından haritaya işaretçi eklemek için elde edilen yer verilerini kullanır.
Yerler Hizmeti (Eski)
Aşağıdaki sıkıştırılmış kod snippet'inde, PlacesService
kullanılarak yer ayrıntıları isteği yapılması gösterilmektedir. İstek, geri çağırma kullanır ve PlacesServiceStatus
üzerinde zorunlu koşullu bir kontrol içerir. Gerekli yer verisi alanları istek gövdesinde belirtilir.
function getPlaceDetails() {
// Instantiate the Places Service.
const service = new google.maps.places.PlacesService(map);
// Make a request using the Place ID.
const request = {
placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
fields: ["name", "formatted_address", "place_id", "geometry"],
};
// Request place details.
service.getDetails(request, (place, status) => {
// Check whether PlacesServiceStatus is OK.
if (
status === google.maps.places.PlacesServiceStatus.OK &&
place &&
place.geometry &&
place.geometry.location
) {
// Log the result.
console.log(place.name);
console.log(place.formatted_address);
// Add a marker for the place.
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
});
}
Daha fazla bilgi
Yer sınıfı (Yeni)
Aşağıdaki sıkıştırılmış kod snippet'inde, Place
sınıfı kullanılarak yer ayrıntıları isteği yapılması gösterilmektedir. İstek ayarsızdır ve durum kontrolü içermez (standart hata işleme kullanılabilir). Yeni bir Place
örneği oluşturmak için yer kimliği kullanılır. Bu örnek, isteği yapmak için kullanılır (fetchFields()
). Gerekli yer verisi alanları, fetchFields()
çağrılana kadar iletilmez. Bu da daha fazla esneklik sağlar. fetchFields()
yöntemi await operatörünü kullandığından yalnızca bir async
işlevi içinde kullanılabilir.
async function getPlaceDetails() {
// Use place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
requestedLanguage: "en", // optional
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// Log the result.
console.log(place.displayName);
console.log(place.formattedAddress);
// Add an Advanced Marker.
const marker = new google.maps.marker.AdvancedMarkerElement({
map,
position: place.location,
title: place.displayName,
});
}