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

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

Daha fazla bilgi