Yeni Yer Ayrıntıları'na geçiş

Avrupa Ekonomik Alanı (AEA) geliştiricileri

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

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,
  });
}

Daha fazla bilgi