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 verilmektedir. Aşağıdaki tabloda, Place
sınıfı ile PlacesService
arasındaki yer ayrıntılarının kullanımındaki bazı temel farklılıklar listelenmiştir:
PlacesService (Eski) |
Place (Yeni) |
---|---|
getDetails() |
fetchFields() |
PlaceDetailsRequest |
FetchFieldsRequest |
Yöntemler, sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için geri çağırma işlevinin kullanılmasını gerektirir. |
Promises kullanır ve eşzamansız olarak çalışır. |
Yöntemler için PlacesServiceStatus kontrolü gerekir. |
Durum kontrolü gerekmez, standart hata işleme kullanılabilir. Daha fazla bilgi |
Yer verileri alanları, snake case kullanılarak biçimlendirilir. | Yer verisi alanları, camel case kullanılarak biçimlendirilir. |
Yer türleri ve yer verileri alanlarından oluşan sabit bir grupla sınırlıdır. | Düzenli olarak güncellenen yer türleri ve yer verisi alanları için daha kapsamlı bir seçim sunar. |
Kod karşılaştırması
Bu bölümde, Places Service 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ğinde bulunmak için her API'de gereken kodu gösterir ve ardından sonuçtaki yer verilerini kullanarak haritaya işaretçi ekler.
Places Service (Eski)
Aşağıdaki kısaltılmış kod snippet'inde, PlacesService
kullanılarak yer ayrıntıları isteğinde bulunma işlemi gösterilmektedir. İstek, geri çağırma işlevini kullanır ve PlacesServiceStatus
üzerinde zorunlu bir koşullu 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
- Tam kod örneğine bakın
- Yer Ayrıntıları dokümanları
getDetails
referans
Yer sınıfı (Yeni)
Aşağıdaki kısaltılmış kod snippet'inde, Place
sınıfı kullanılarak yer ayrıntıları isteğinde bulunma işlemi gösterilmektedir. İstek asenkron olduğundan durum kontrolü içermez (standart hata işleme kullanılabilir). Yer kimliği, isteği göndermek için kullanılan yeni bir Place
örneği oluşturmak 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,
});
}