Places API, belirli bir yer hakkında ayrıntılı bilgi 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, sonuçlar nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için 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 tire kullanılarak biçimlendirilir. | Yer veri alanları, büyük/küçük harf kullanmadan biçimlendirilir. |
Sabit bir yer türü ve yer veri alanı kümesiyle sınırlıdır. | Düzenli olarak güncellenen yer türleri ve yer veri alanları ile ilgili 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ılmaktadır. Kod snippet'leri, yer ayrıntıları isteği göndermek 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 bir 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 asenkrondur ve durum kontrolü içermez (standart hata işleme kullanılabilir). Yer kimliği, isteği yapmak için kullanılan yeni bir Place
örneği oluşturmak amacıyla 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,
});
}