Yerler Kitaplığı

Platform seçin: Android iOS JavaScript Web Hizmeti

Genel bakış

Yerler Kitaplığı'ndaki Haritalar JavaScript API'sinde bulunan işlevler, uygulamanızın belirli bir alan içinde (örneğin, harita sınırları veya sabit bir noktanın çevresinde) yer, (bu API'de kurulumlar, coğrafi konumlar veya önemli noktalar olarak tanımlanır) yerleri aramasını sağlar.

Yerler API'si, uygulamalarınıza Google Haritalar arama alanının türden önce arama davranışını sağlamak için kullanabileceğiniz bir otomatik tamamlama özelliği sunar. Kullanıcı adresi yazmaya başladığında, otomatik tamamlama otomatik olarak diğer alanları doldurur. Daha fazla bilgi için otomatik tamamlama dokümanlarına bakın.

Kullanmaya başlama

Maps JavaScript API veya JavaScript hakkında bilginiz yoksa başlamadan önce JavaScript'i incelemenizi ve API anahtarı almanızı öneririz.

API'leri etkinleştir

Maps JavaScript API'deki Yerler kitaplığını kullanmadan önce, Yerler API'sinin Google Cloud Console'da etkinleştirilmiş olduğundan emin olun. Bu işlem, Maps JavaScript API için ayarladığınız projede gerçekleşir.

Etkin API'lerinizin listesini görüntülemek için:

  1. Google Cloud Console'a gidin.
  2. Proje seçin düğmesini tıklayın, ardından Maps JavaScript API için oluşturduğunuz projeyi seçin ve 'ı tıklayın.
  3. Kontrol Paneli'ndeki API listesinde Places API'yi bulun.
  4. Listede Yerler API'sini görüyorsanız zaten etkindir. API listede yoksa etkinleştirin:
    1. Kitaplık sekmesini görüntülemek için sayfanın üst kısmında API'LERİ VE HİZMETLERİ ETKİNLEŞTİR'i seçin. Alternatif olarak sol taraftaki menüden Kitaplık'ı seçin.
    2. Places API'yi arayıp sonuçlar listesinden seçin.
    3. ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Places API, Kontrol Paneli'nde API listesinde görünür.

Kitaplık yükleniyor

Rehber hizmeti, ana Maps JavaScript API kodundan ayrı, bağımsız bir kitaplıktır. Bu kitaplıkta bulunan işlevi kullanmak için önce Haritalar API'si önyükleme URL'sindeki libraries parametresini kullanarak işlevi yüklemeniz gerekir:

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap">
</script>

Daha fazla bilgi için Kitaplıklara Genel Bakış sayfasını inceleyin.

Yerler API'sini API anahtarının API kısıtlamaları listesine ekleme

Anahtarlarınıza API kısıtlamaları uygulamak, API anahtarının kullanımını bir veya daha fazla API ya da SDK ile sınırlar. API anahtarıyla ilişkilendirilmiş bir API veya SDK'ya yapılan istekler işlenir. API anahtarıyla ilişkili olmayan bir API veya SDK'ya yapılan istekler başarısız olur. Bir API anahtarını Yerler Kitaplığı ile kullanmak için Maps JavaScript API ile kısıtlamak için:
  1. Google Cloud Console'a gidin.
  2. Proje açılır menüsünü tıklayın ve güvenliğini sağlamak istediğiniz API anahtarını içeren projeyi seçin.
  3. Menü düğmesini tıklayıp Google Haritalar Platformu > Kimlik bilgileri'ni seçin.
  4. Kimlik bilgileri sayfasında, güvenliğini sağlamak istediğiniz API anahtarının adını tıklayın.
  5. API anahtarını kısıtla ve yeniden adlandır sayfasında kısıtlamaları belirleyin:
    • API kısıtlamaları
      • Anahtarı kısıtla'yı seçin.
      • API'leri seçin'i tıklayın ve Haritalar JavaScript API'si ile Places API'yi seçin.
        (API'lerden biri listede yoksa etkinleştirmeniz gerekir.)
  6. KAYDET'i tıklayın.

Kullanım sınırları ve politikalar

Kotalar

Yerler Kitaplığı, Yerler API'sinin Kullanım Sınırları dokümanlarında açıklandığı gibi bir kullanım API'sini kullanır.

Politikalar

Yerler Kitaplığı'nın kullanımı için Maps JavaScript API, Places API'si için açıklanan politikalara uygun olmalıdır.

Yer Aramaları

Yerler hizmetini kullanarak aşağıdaki arama türlerini gerçekleştirebilirsiniz:

  • Sorgudan Yer Bulma, metin sorgusuna (örneğin, bir yerin adı veya adresi) göre bir yer döndürür.
  • Telefon Numarasından Yer Bulun seçeneği, telefon numarasına göre bir yer döndürür.
  • Yakındaki Arama, kullanıcının konumuna göre yakındaki yerlerin listesini döndürür.
  • Metin Arama, bir arama dizesine göre yakındaki yerlerin listesini döndürür (ör. "Pizza".
  • Yer Ayrıntıları istekleri, kullanıcı yorumları da dahil olmak üzere belirli bir yer hakkında daha ayrıntılı bilgiler döndürür.

İade edilen bilgiler arasında restoranlar, mağazalar ve ofisler gibi kuruluşların yanı sıra adresleri, ilçe ve şehir gibi siyasi bölgeleri ve diğer önemli yerleri belirten "coğrafi kodlama" sonuçları yer alabilir.

Yer Bulma istekleri

Yer Bulma isteği, bir yeri metin sorgusu veya telefon numarasıyla aramanıza olanak tanır. İki tür Yer Bulma isteği vardır:

Sorgudan Yer Bulma

Sorgudan Yer Bulma, metin girişi alır ve bir yer döndürür. Giriş, işletme adı veya adres gibi herhangi bir yer verisi olabilir. Sorgu isteğinden bir yer bulmak için aşağıdaki parametreleri alan PlacesService findPlaceFromQuery() yöntemini çağırın:

  • query (zorunlu) Arama yapılacak metin dizesi. Örneğin: "restoran" veya "Ana Cadde 123". Bu; bir yer adı, adres veya kurum kategorisi olmalıdır. Diğer giriş türleri hata oluşturabilir ve geçerli sonuçlar döndüreceği garanti edilmez. Rehber API'si, bu dizeye dayalı aday eşleşmelerini döndürür ve sonuçları algılanan alaka düzeyine göre sıralar.
  • fields (zorunlu) Döndürülecek Yer verisi türlerini belirten bir veya daha fazla alan.
  • locationBias (isteğe bağlı) Arama yapılacak alanı tanımlayan koordinatlar. Aşağıdakilerden biri olabilir:

Sonuç nesnesini işlemek ve google.maps.places.PlacesServiceStatus yanıtını kullanmak için findPlaceFromQuery() öğesine bir geri çağırma yöntemi de iletmeniz gerekir.

Aşağıdaki örnekte "Avustralya Modern Sanat Müzesi" için arama yapan ve name ile geometry alanlarının dahil olduğu findPlaceFromQuery() çağrısı gösteriliyor.

var map;
var service;
var infowindow;

function initMap() {
  var sydney = new google.maps.LatLng(-33.867, 151.195);

  infowindow = new google.maps.InfoWindow();

  map = new google.maps.Map(
      document.getElementById('map'), {center: sydney, zoom: 15});

  var request = {
    query: 'Museum of Contemporary Art Australia',
    fields: ['name', 'geometry'],
  };

  var service = new google.maps.places.PlacesService(map);

  service.findPlaceFromQuery(request, function(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
      map.setCenter(results[0].geometry.location);
    }
  });
}
Örneği görüntüleyin

Telefon Numarasından Yer Bulma

Telefon Numarasından Yer Bul özelliği bir telefon numarası alır ve yer bilgisi döndürür. Telefon Numarasından Yer Bulma isteğinde bulunmak için aşağıdaki parametreleri alan PlacesService findPlaceFromPhoneNumber() yöntemini çağırın:

  • phoneNumber (gerekli) E.164 biçiminde bir telefon numarası.
  • fields (zorunlu) Döndürülecek Yer verisi türlerini belirten bir veya daha fazla alan.
  • locationBias (isteğe bağlı) Arama yapılacak alanı tanımlayan koordinatlar. Aşağıdakilerden biri olabilir:

Sonuç nesnesini işlemek ve google.maps.places.PlacesServiceStatus yanıtını kullanmak için findPlaceFromPhoneNumber() öğesine bir geri çağırma yöntemi de iletmeniz gerekir.

Alanlar (Yer bulma yöntemleri)

Döndürülecek yer verisi türleri dizisini belirtmek için fields parametresini kullanın. Örneğin: fields: ['formatted_address', 'opening_hours', 'geometry']. Bileşik değerleri belirtirken nokta kullanın. Örneğin: opening_hours.weekday_text.

Alanlar Yer Arama sonuçlarına karşılık gelir ve üç faturalandırma kategorisine ayrılır: Temel, Kişi ve Atmosfer. Temel alanlar, taban ücretle faturalandırılır. Bu alanlar için ek ücret alınmaz. İletişim ve Atmosfer alanları daha yüksek ücretle faturalandırılır. Daha fazla bilgi için fiyatlandırma sayfasına göz atın. İlişkilendirmeler (html_attributions), alanın istenip istenmediğine bakılmaksızın her çağrıda her zaman döndürülür.

Temel

Temel kategori şu alanları içerir:
business_status, formatted_address, geometry, icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (kullanımdan kaldırıldı), photos, place_id, plus_code, types

İletişim

Kişi kategorisi şu alanı içerir: opening_hours
(Yerler kitaplığında, Haritalar JavaScript API'sinde kullanımdan kaldırıldı. opening_hours sonuçlarını almak için Yer Ayrıntıları isteğini kullanın.)

Atmosfer

Atmosfer kategorisinde aşağıdaki alanlar yer alır: price_level, rating, user_ratings_total

findPlaceFromQuery() ve findPlaceFromPhoneNumber() yöntemlerinin her biri aynı alan grubunu alır ve ilgili alanlarda aynı alanları döndürebilir.

Konum taraflılığını ayarlama (Yer bulma yöntemleri)

Belirli bir bölgede Yer Bulma avantaj sonuçları oluşturmak için locationBias parametresini kullanın. locationBias değerini aşağıdaki yöntemlerle ayarlayabilirsiniz:

Belirli bir bölgeyle ilgili sonuçları:

locationBias: {lat: 37.402105, lng: -122.081974}

Aranacak dikdörtgen alanı tanımlayın:

locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}

LatLngBounds da kullanabilirsiniz.

Belirli bir alanın merkezinde arama yapmak için bir yarıçap tanımlayın (metre cinsinden):

locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}

Yakın Arama İstekleri

Yakındaki Arama, anahtar kelime veya türe göre belirli bir alandaki yerleri aramanıza olanak tanır. Yakındaki Arama her zaman iki konumla belirtilebilecek bir konum içermelidir:

  • LatLngBounds.
  • location özelliğinin kombinasyonu olarak tanımlanan dairesel bir alan (dairenin merkezini LatLng nesnesi olarak belirtir) ve yarıçap olarak ölçülen bir yarıçap.

Yakındaki Yerler araması, PlacesService'in nearbySearch() yöntemini çağırarak başlatılır. Böylece bir dizi PlaceResult nesnesi döndürülür. Sürüm 3.9'dan itibaren nearbySearch() yönteminin search() yönteminin yerini aldığını unutmayın.

service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

Bu yöntem, aşağıdaki alanları içeren bir istek alır:

  • Şunlardan biri:
    • Dikdörtgen arama alanını tanımlayan bir google.maps.LatLngBounds nesnesi olması gereken bounds veya
    • Bir location ve radius; birincisi bir google.maps.LatLng nesnesi, ikincisi ise dairenin yarıçapını metre cinsinden temsil eden basit bir tam sayı alır. İzin verilen maksimum yarıçap 50.000 metredir. rankBy, DISTANCE değerine ayarlandığında location belirtmelisiniz ancak radius veya bounds belirtemezsiniz.
  • keyword (isteğe bağlı): Ad, tür ve adresin yanı sıra müşteri yorumları ve diğer üçüncü taraf içerikler dahil ancak bunlarla sınırlı olmamak üzere tüm mevcut alanlarla eşleştirilecek bir terimdir.
  • minPriceLevel ve maxPriceLevel (isteğe bağlı): Sonuçları yalnızca belirtilen aralıktaki yerlerle sınırlar. Geçerli değerler 0 (en uygun) ile 4 (en pahalı) arasında değişir.
  • name Kullanımdan kaldırıldı. keyword yönergesine eşdeğer. Bu alandaki değerler, keyword alanındaki değerlerle birleştirilir ve aynı arama dizesinin bir parçası olarak aktarılır.
  • openNow (isteğe bağlı): Yerler hizmetinin, yalnızca sorgu gönderildiğinde açık olan yerleri döndürmesi gerektiğini belirten bir boole değeridir. Bu parametreyi sorgunuza eklerseniz Google Yerler veritabanında çalışma saatleri belirtmeyen yerler döndürülmez. openNow işlevinin false olarak ayarlanmasının hiçbir etkisi yoktur.
  • rankBy (isteğe bağlı): Sonuçların listelendiği sırayı belirtir. Olası değerler:
    • google.maps.places.RankBy.PROMINENCE (varsayılan). Bu seçenek, sonuçları önemlerine göre sıralar. Sıralama, belirlenen yakınlıktaki eşleşen ancak yakındaki yerler yerine öncelikli yerleri öne çıkarır. Belirginlik, bir yerin Google'ın dizinindeki sıralamasından, küresel popülerlikten ve diğer faktörlerden etkilenebilir. google.maps.places.RankBy.PROMINENCE belirtildiğinde radius parametresi gerekir.
    • google.maps.places.RankBy.DISTANCE. Bu seçenek, sonuçları belirtilen location mesafesine göre artan düzende sıralar (zorunlu). RankBy.DISTANCE belirtirseniz özel bir bounds ve/veya radius belirtemeyeceğinizi unutmayın. RankBy.DISTANCE değerini belirttiğinizde keyword, name veya type özelliklerinden biri veya daha fazlası gerekli olur.
  • type: Sonuçları, belirtilen türle eşleşen yerlerle sınırlar. Yalnızca bir tür belirtilebilir (birden fazla tür sağlanırsa ilk girişi izleyen tüm türler yok sayılır). Desteklenen türlerin listesine bakın.

Sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için nearbySearch() özelliğine bir geri çağırma yöntemi de iletmeniz gerekir.

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    type: ['restaurant']
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

Örneği göster

Metin Arama İstekleri

Google Yerler Metin Arama hizmeti, bir dizi dizeye dayalı olarak bir dizi yer hakkında bilgi döndüren bir web hizmetidir. Örneğin "İstanbul'daki pizzacılar" veya "Ottava yakınlarındaki ayakkabı mağazaları". Hizmet, metin dizesi ve ayarlanan konum ön eki ile eşleşen yerlerin listesiyle yanıt verir. Arama yanıtında bir yer listesi bulunur. Yanıttaki herhangi bir yer hakkında daha fazla bilgi için Yer Ayrıntıları isteği gönderebilirsiniz.

Metin Aramaları, PlacesService yönteminin textSearch() yöntemi çağrılmayla başlatılır.

service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);

Bu yöntem, aşağıdaki alanları içeren bir istek alır:

  • query (zorunlu) Aranacak metin dizesi. Örneğin: "restoran" veya "Ana Cadde 123". Bu; bir yer adı, adres veya kurum kategorisi olmalıdır. Diğer giriş türleri hata oluşturabilir ve geçerli sonuçlar döndüreceği garanti edilmez. Yerler hizmeti, bu dizeye dayalı aday eşleşmelerini döndürür ve sonuçları algılanan alaka düzeyine göre sıralar. type parametresi, arama isteğinde de kullanılırsa isteğe bağlı olur.
  • İsteğe bağlı olarak:
    • openNow: Yerler hizmetinin, yalnızca sorgu gönderildiğinde açık olan yerleri döndürmesi gerektiğini belirten bir boole değeridir. Bu parametreyi sorgunuza eklerseniz Google Yerler veritabanında çalışma saatleri belirtmeyen yerler döndürülmez. openNow işlevinin false olarak ayarlanmasının hiçbir etkisi yoktur.
    • minPriceLevel ve maxPriceLevel: Sonuçları yalnızca belirtilen fiyat düzeyindeki yerlerle sınırlandırır. Geçerli değerler, 0 (en uygun) ile 4 (en pahalı) dahil olmak üzere 2 aralıkta bulunur.
    • Şunlardan biri:
      • bounds - Aranacak dikdörtgeni tanımlayan bir google.maps.LatLngBounds nesnesi veya
      • location ve radius: location ve radius parametrelerini ileterek sonuçları belirli bir çevreye yönlendirebilirsiniz. Bu şekilde, Rehber hizmeti, sonuçları söz konusu çevrede göstermeyi tercih eder. Tanımlanan alanın dışındaki sonuçlar gösterilmeye devam edebilir. Konum bir google.maps.LatLng nesnesi ve yarıçap, dairenin yarıçapını metre cinsinden temsil eden basit bir tam sayı alır. İzin verilen maksimum yarıçap 50.000 metredir.
    • type: Sonuçları, belirtilen türle eşleşen yerlerle sınırlandırır. Yalnızca bir tür belirtilebilir (birden fazla tür sağlanırsa ilk girişi izleyen tüm türler yok sayılır). Desteklenen türlerin listesine bakın.

Sonuç nesnesini ve bir google.maps.places.PlacesServiceStatus yanıtını işlemek için textSearch() özelliğine bir geri çağırma yöntemi de iletmeniz gerekir.

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    query: 'restaurant'
  };

  service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}

Arama Yanıtları

Durum Kodları

PlacesServiceStatus yanıt nesnesi, isteğin durumunu içerir ve yer isteğinin neden başarısız olduğunu izlemenize yardımcı olmak için hata ayıklama bilgileri içerebilir. Olası durum değerleri şunlardır:

  • INVALID_REQUEST: Bu istek geçersizdi.
  • OK: Yanıt geçerli bir sonuç içeriyor.
  • OVER_QUERY_LIMIT: Web sayfası istek kotasını aştı.
  • REQUEST_DENIED: Web sayfasının PlaceService'i kullanmasına izin verilmez.
  • UNKNOWN_ERROR: PlaceService isteği, sunucu hatası nedeniyle işlenemedi. Tekrar denerseniz istek başarılı olabilir.
  • ZERO_RESULTS: Bu istek için sonuç bulunamadı.

Yer Arama Sonuçları

findPlace(), nearbySearch() ve textSearch() işlevleri bir dizi PlaceResult nesnesi döndürür.

Her PlaceResult nesnesi aşağıdaki özellikleri içerebilir:

  • business_status, bir işletme olduğunda ilgili işletmenin çalışma durumunu gösterir. Aşağıdaki değerlerden birini içerebilir:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Veri yoksa business_status döndürülmez.
  • formatted_address, bu yerin kullanıcılar tarafından okunabilen adresini içeren bir dizedir. formatted_address özelliği yalnızca bir Metin Arama için döndürülür.

    Bu adres genellikle posta adresinin eş değeridir. Birleşik Krallık gibi bazı ülkelerde, lisanslama kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini hatırlatmak isteriz.

    Biçimlendirilmiş adres, mantıksal olarak bir veya daha fazla adres bileşeninden oluşur. Örneğin, "111 8th Avenue, New York, NY" adresi şu bileşenlerden oluşur: "111" (cadde numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

    Biçimlendirilmiş adresi programatik olarak ayrıştırmayın. Bunun yerine, biçimlendirilmiş adres alanına ek olarak API yanıtının içerdiği bağımsız adres bileşenlerini kullanmanız gerekir.

  • geometry: Yerin geometrisiyle ilgili bilgiler. Buna aşağıdakiler dahildir:
    • location, yerin enlem ve boylamını belirtir.
    • viewport, bu yeri görüntülerken tercih edilen görüntü alanını tanımlar.
  • permanently_closed (kullanımdan kaldırıldı), yerin kalıcı olarak mı yoksa geçici olarak mı (true değeri) kapanıp kapanmadığını gösteren bir boole flag'idir. permanently_closed kullanmayın. İşletmelerin faaliyet durumunu öğrenmek için bunun yerine business_status özelliğini kullanın.
  • plus_code (Konum Kodunu Aç ve artı kodları sayfalarına bakın), enlem ve boylam koordinatlarından türetilmiş bir alanı temsil eden kodlanmış konum referansıdır: Derecenin 1/8000'i ile 1/8000 derecenin (ekvatorda yaklaşık 14 x 14 metre) veya daha küçük bir alanı temsil eder. Artı kodları, var olmayan yerlerde (binaların numaralanmadığı veya sokakların adlandırılmadığı) açık adreslerin yerine kullanılabilir.

    Artı kodu, genel bir kod ve bir birleşik kod olarak biçimlendirilir:

    • global_code, 4 karakter alanlı bir kod ve 6 veya daha uzun yerel koddur (849VCWC8+R9).
    • compound_code, açık bir konuma (CWC8+R9, Mountain View, CA, ABD) sahip 6 veya daha uzun yerel koddur. Bu içeriği programatik olarak ayrıştırmayın.
    Genellikle hem genel kod hem de birleşik kod döndürülür. Ancak sonuç uzak bir konumdaysa (örneğin bir okyanus veya çöl) yalnızca genel kod döndürülebilir.
  • html_attributions: Arama sonuçlarını gösterirken göstermeniz gereken atıflar dizisi. Dizideki her giriş, tek bir ilişkilendirmenin HTML metnini içerir. Not: Bu, arama yanıtının tamamı için tüm ilişkilendirmelerin toplamıdır. Bu nedenle yanıttaki PlaceResult nesnelerinin hepsi, aynı ilişkilendirme listelerini içerir.
  • icon, renkli 71 piksel x 71 piksel PNG simgesinin URL'sini döndürür.
  • icon_mask_base_uri, renkli olmayan bir simgenin temel URL'sinden .svg veya .png uzantısının çıkarılmasıyla elde edilir.
  • icon_background_color, yer kategorisi için varsayılan HEX renk kodunu döndürür.
  • name: Yerin adı.
  • opening_hours aşağıdaki bilgileri içerebilir:
    • open_now, yerin şu anda açık olup olmadığını gösteren bir boole değeridir (Yerler Kitaplığı'nda, Maps JavaScript API'de kullanımdan kaldırıldı, bunun yerine utc_offset_minutes kullanın).
  • place_id, bir yeri benzersiz şekilde tanımlayan metin tanımlayıcısıdır. Yer hakkında bilgi almak için Yer Ayrıntıları isteğinde bu tanımlayıcıyı iletin. Yer kimliği kullanarak bir yere referans verme hakkında daha fazla bilgi edinin.
  • rating, toplu kullanıcı yorumlarına göre 0,0 ile 5,0 arasında bir yerin puanını içerir.
  • types Bu yer için bir dizi tür (ör. ["political", "locality"] veya ["restaurant", "lodging"]). Bu dizi, birden fazla değer içerebilir veya boş olabilir. Yeni değerler, önceden bildirimde bulunulmaksızın sunulabilir. Desteklenen türlerin listesini inceleyin.
  • vicinity: Sokak adı, sokak numarası ve konum bilgisi dahil olmak üzere bölge için basitleştirilmiş bir adrestir ancak il/eyalet, posta kodu veya ülke bilgisi dahil değildir. Örneğin, Google'ın Sydney, Avustralya ofisinin vicinity değeri 5/48 Pirrama Road, Pyrmont olur.

Ek Sonuçlara Erişme

Varsayılan olarak her yer araması, sorgu başına en fazla 20 sonuç döndürür. Ancak, her arama üç sayfaya bölünerek en fazla 60 sonuç döndürebilir. PlaceSearchPagination nesnesi aracılığıyla ek sayfalar mevcuttur. Ek sayfalara erişmek için bir geri çağırma işlevi aracılığıyla PlaceSearchPagination nesnesini yakalamanız gerekir. PlaceSearchPagination nesnesi şu şekilde tanımlanır:

  • hasNextPage Daha fazla sonuç olup olmadığını gösteren bir boole özelliği. true ise ek bir sonuç sayfası olduğunda.
  • nextPage() ile bir sonraki sonuç grubunu döndürür. Bir arama yaptıktan sonra, bir sonraki sonuç sayfasının hazır olması için iki saniye beklemeniz gerekir.

Sonraki sonuç grubunu görmek için nextPage numaralı telefonu arayın. Her sonuç sayfası, bir sonraki sonuç sayfası görüntülenmeden önce görüntülenmelidir. Her aramanın, kullanım sınırlarınız kapsamında tek bir istek olarak sayıldığını unutmayın.

Aşağıdaki örnekte, birden fazla arama isteğinde bulunabilmeniz için PlaceSearchPagination nesnesini yakalamak üzere geri çağırma işlevinizin nasıl değiştirileceği gösterilmektedir.

TypeScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">

function initMap(): void {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: pyrmont,
      zoom: 17,
      mapId: "8d193001f940fde3",
    } as google.maps.MapOptions
  );

  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage: () => void | false;
  const moreButton = document.getElementById("more") as HTMLButtonElement;

  moreButton.onclick = function () {
    moreButton.disabled = true;

    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (
      results: google.maps.places.PlaceResult[] | null,
      status: google.maps.places.PlacesServiceStatus,
      pagination: google.maps.places.PlaceSearchPagination | null
    ) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;

      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    }
  );
}

function addPlaces(
  places: google.maps.places.PlaceResult[],
  map: google.maps.Map
) {
  const placesList = document.getElementById("places") as HTMLElement;

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon!,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name!,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name!;
      placesList.appendChild(li);

      li.addEventListener("click", () => {
        map.setCenter(place.geometry!.location!);
      });
    }
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
function initMap() {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(document.getElementById("map"), {
    center: pyrmont,
    zoom: 17,
    mapId: "8d193001f940fde3",
  });
  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage;
  const moreButton = document.getElementById("more");

  moreButton.onclick = function () {
    moreButton.disabled = true;
    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (results, status, pagination) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;
      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    },
  );
}

function addPlaces(places, map) {
  const placesList = document.getElementById("places");

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name;
      placesList.appendChild(li);
      li.addEventListener("click", () => {
        map.setCenter(place.geometry.location);
      });
    }
  }
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Yer Ayrıntıları

Yerler hizmeti, bir bölgedeki yerlerin listesini sunmanın yanı sıra belirli bir yer hakkında ayrıntılı bilgiler de döndürebilir. Bir yer arama yanıtında iade edildikten sonra, yer kimliği söz konusu yer hakkında tam adresi, telefon numarası, kullanıcı puanı ve yorumları gibi ek ayrıntılar istemek için kullanılabilir.

Yer Ayrıntıları İstekleri

Yer Ayrıntıları, hizmetin getDetails() yöntemine çağrı yapılarak istenir.

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

Bu yöntem, istenen yerin placeId bilgisini ve döndürülecek Yerler verisi türlerini belirten alanları içeren bir istek alır. Yer kimliği kullanarak bir yere referans verme hakkında daha fazla bilgi edinin.

Ayrıca, google.maps.places.PlacesServiceStatus yanıtında iletilen durum kodunu ve google.maps.places.PlaceResult nesnesini işlemesi gereken bir geri çağırma yöntemi de alır.

var request = {
  placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',
  fields: ['name', 'rating', 'formatted_phone_number', 'geometry']
};

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

function callback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    createMarker(place);
  }
}

Örneği göster

Alanlar (Yer ayrıntıları)

fields parametresi bir dizi dize (alan adı) alır.

Döndürülecek yer verisi türleri dizisini belirtmek için fields parametresini kullanın. Örneğin: fields: ['address_components', 'opening_hours', 'geometry']. Bileşik değerleri belirtirken nokta kullanın. Örneğin: opening_hours.weekday_text.

Alanlar Yer Ayrıntıları sonuçlarına karşılık gelir ve üç faturalandırma kategorisine ayrılmıştır: Temel, İletişim ve Atmosfer. Temel alanlar, taban ücret üzerinden faturalandırılır ve ek ücret alınmaz. İletişim ve Atmosfer alanları daha yüksek ücretle faturalandırılır. Daha fazla bilgi için fiyatlandırma sayfasına göz atın. İlişkilendirmeler (html_attributions) istenip istenmediğine bakılmaksızın her çağrıda her zaman döndürülür.

Temel

Temel kategori şu alanları içerir:
address_components, adr_address, business_status, formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (kullanımdan kaldırıldı), photo, place_id, plus_code, type, url, utc_offset, in/in utc_offset_minutesvicinity

İletişim

Kişi kategorisi şu alanları içerir:
formatted_phone_number, international_phone_number, opening_hours, website

Atmosfer

Atmosfer kategorisinde aşağıdaki alanlar bulunur: price_level, rating, reviews, user_ratings_total

Yer alanları hakkında daha fazla bilgi edinin. Yer verileri isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi için Kullanım ve Faturalandırma bölümüne bakın.

Yer Ayrıntılarıyla İlgili Yanıtlar

Durum Kodları

PlacesServiceStatus yanıt nesnesi, isteğin durumunu içerir ve Yer Ayrıntıları isteğinin neden başarısız olduğunu izlemenize yardımcı olmak için hata ayıklama bilgileri içerebilir. Olası durum değerleri şunlardır:

  • INVALID_REQUEST: Bu istek geçersizdi.
  • OK: Yanıt geçerli bir sonuç içeriyor.
  • OVER_QUERY_LIMIT: Web sayfası istek kotasını aştı.
  • NOT_FOUND Başvurulan konum, Yerler veritabanında bulunamadı.
  • REQUEST_DENIED: Web sayfasının PlaceService'i kullanmasına izin verilmez.
  • UNKNOWN_ERROR: PlaceService isteği, sunucu hatası nedeniyle işlenemedi. Tekrar denerseniz istek başarılı olabilir.
  • ZERO_RESULTS: Bu istek için sonuç bulunamadı.

Yer Ayrıntıları Sonuçları

Başarılı bir getDetails() çağrısı, aşağıdaki özelliklere sahip bir PlaceResult nesnesi döndürür:

  • address_components: Bu adres için geçerli olan ayrı bileşenleri içeren bir dizi.

    Her adres bileşeni genellikle aşağıdaki alanları içerir:

    • types[], adres bileşeninin türünü belirten bir dizidir. Desteklenen türlerin listesini inceleyin.
    • long_name, Geocoder tarafından döndürülen adres bileşeninin tam metin açıklaması veya adıdır.
    • short_name, adres bileşeninin kısaltılmış metin adıdır (varsa). Örneğin, Alaska eyaletinde bir adres bileşeninin long_name "Alaska" ve short_name "AK" olmasına rağmen 2 harfli posta kısaltması kullanılabilir.

    address_components[] dizisi hakkında aşağıdaki bilgilere dikkat edin:

    • Adres bileşenleri dizisi, formatted_address sayısından daha fazla bileşen içerebilir.
    • Dizi, formatted_address dahilindekiler dışında, adres içeren tüm siyasi varlıkları her zaman kapsamaz. Belirli bir adres içeren tüm siyasi varlıkları almak için ters coğrafi kodlamayı kullanarak adresin enlem/boylamını parametre olarak parametre olarak kullanmanız gerekir.
    • Yanıtın biçimler arasında aynı kalacağı garanti edilmez. Özellikle address_components sayısı, talep edilen adrese göre değişir ve aynı adres için zaman içinde değişebilir. Bir bileşen, dizideki konumu değiştirebilir. Bileşenin türü değişebilir. Daha sonraki bir yanıtta belirli bir bileşen eksik olabilir.
  • business_status, bir işletme olduğunda ilgili işletmenin çalışma durumunu gösterir. Aşağıdaki değerlerden birini içerebilir:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Veri yoksa business_status döndürülmez.
  • formatted_address: Bu yerin kullanıcılar tarafından okunabilen adresi.

    Bu adres genellikle posta adresinin eş değeridir. Birleşik Krallık gibi bazı ülkelerde, lisanslama kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini hatırlatmak isteriz.

    Biçimlendirilmiş adres, mantıksal olarak bir veya daha fazla adres bileşeninden oluşur. Örneğin, "111 8th Avenue, New York, NY" adresi şu bileşenlerden oluşur: "111" (cadde numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

    Biçimlendirilmiş adresi programatik olarak ayrıştırmayın. Bunun yerine, biçimlendirilmiş adres alanına ek olarak API yanıtının içerdiği bağımsız adres bileşenlerini kullanmanız gerekir.

  • formatted_phone_number: Yerin numaranın bölgesel kurallarına göre biçimlendirilmiş telefon numarası.
  • geometry: Yerin geometrisiyle ilgili bilgiler. Buna aşağıdakiler dahildir:
    • location, yerin enlem ve boylamını belirtir.
    • viewport, bu yeri görüntülerken tercih edilen görüntü alanını tanımlar.
  • permanently_closed (kullanımdan kaldırıldı), yerin kalıcı olarak mı yoksa geçici olarak mı (true değeri) kapanıp kapanmadığını gösteren bir boole flag'idir. permanently_closed kullanmayın. İşletmelerin faaliyet durumunu öğrenmek için bunun yerine business_status özelliğini kullanın.
  • plus_code (Konum Kodunu Aç ve artı kodları sayfalarına bakın), enlem ve boylam koordinatlarından türetilmiş bir alanı temsil eden kodlanmış konum referansıdır: Derecenin 1/8000'i ile 1/8000 derecenin (ekvatorda yaklaşık 14 x 14 metre) veya daha küçük bir alanı temsil eder. Artı kodları, var olmayan yerlerde (binaların numaralanmadığı veya sokakların adlandırılmadığı) açık adreslerin yerine kullanılabilir.

    Artı kodu, genel bir kod ve bir birleşik kod olarak biçimlendirilir:

    • global_code, 4 karakter alanlı bir kod ve 6 veya daha uzun yerel koddur (849VCWC8+R9).
    • compound_code, açık bir konuma (CWC8+R9, Mountain View, CA, ABD) sahip 6 veya daha uzun yerel koddur. Bu içeriği programatik olarak ayrıştırmayın.
    Genellikle hem genel kod hem de birleşik kod döndürülür. Ancak sonuç uzak bir konumdaysa (örneğin bir okyanus veya çöl) yalnızca genel kod döndürülebilir.
  • html_attributions: Bu yer sonucu için gösterilecek ilişkilendirme metni.
  • icon: Bu yerin türünü göstermek için kullanılabilecek resim kaynağının URL'si.
  • international_phone_number, yerin telefon numarasını uluslararası biçimde içeriyor. Uluslararası biçim, ülke kodunu içerir ve başında artı (+) işareti bulunur. Örneğin, Google'ın Sydney, Avustralya ofisinin international_phone_number değeri +61 2 9374 4000 şeklindedir.
  • name: Yerin adı.
  • utc_offset Yerler Kitaplığı'nda Maps JavaScript API'de kullanımdan kaldırıldı. Bunun yerine utc_offset_minutes kullanın.
  • utc_offset_minutes, bu yerin mevcut saat diliminin UTC ile farkını belirtir. Örneğin, Avustralya, Sidney'de yaz saati uygulaması bulunan yerler için 660 (UTC'den 11 saat,) ise yaz saati dışında Kaliforniya'daki yerler için bu süre -480'dir (UTC'den -8 saat).
  • opening_hours aşağıdaki bilgileri içerir:
    • open_now (Yerler Kitaplığı, Maps JavaScript API'de kullanımdan kaldırıldı. Bunun yerine opening_hours.isOpen()'ı kullanın. isOpen ürününün Yer Ayrıntıları ile nasıl kullanılacağını öğrenmek için bu videoyu izleyin.) yerin geçerli zamanda açık olup olmadığını gösteren bir boole değeridir.
    • periods[], Pazar'dan başlayarak kronolojik sırayla yedi günü kapsayan bir dizi açılış dönemidir. Her dönem şunları içerir:
      • open, yerin ne zaman açıldığını açıklayan bir çift gün ve saat nesnesi içerir:
        • day, Pazar gününden itibaren haftanın günlerine karşılık gelen 0-6 arası bir sayı. Örneğin, 2, Salı anlamına gelir.
        • time, 24 saat ssdd biçiminde günün bir saatini içerebilir (değerler 0000–2359 aralığındadır). time, yerin saat diliminde raporlanır.
      • close, yerin ne zaman kapandığını açıklayan bir çift gün ve saat nesnesi içerebilir. Not: Bir yer her zaman açıksa yanıtta close bölümü eksik olur. Uygulamalar her zaman açık durumda, 0 değerine sahip day ve 0000 değerine sahip, close içermeyen bir open dönemi olarak temsil edilebilir.time
    • weekday_text, haftanın her günü için biçimlendirilmiş açılış saatlerini temsil eden yedi dizeden oluşan bir dizidir. Yer Ayrıntıları isteğinde bir language parametresi belirtilmişse Yerler Hizmeti, açılış saatlerini bu dile uygun şekilde biçimlendirir ve yerelleştirir. Bu dizideki öğelerin sıralaması, language parametresine bağlıdır. Bazı dillerde hafta pazartesi, bazılarında ise pazar günleri başlar.
  • permanently_closed (kullanımdan kaldırıldı), yerin kalıcı olarak mı yoksa geçici olarak mı (true değeri) kapanıp kapanmadığını gösteren bir boole flag'idir. permanently_closed kullanmayın. İşletmelerin faaliyet durumunu öğrenmek için bunun yerine business_status özelliğini kullanın.
  • photos[]: PlacePhoto nesneleri dizisi. getUrl() yöntemiyle fotoğraf elde etmek için PlacePhoto kullanılabilir veya nesneyi aşağıdaki değerler için inceleyebilirsiniz:
    • height: Resmin piksel cinsinden maksimum yüksekliği.
    • width: Resmin piksel cinsinden maksimum genişliği.
    • html_attributions: Bu yer fotoğrafıyla birlikte gösterilecek ilişkilendirme metni.
  • place_id: Bir yeri benzersiz şekilde tanımlayan ve Yer Ayrıntıları isteği aracılığıyla yer hakkında bilgi almak için kullanılabilecek bir metin tanımlayıcısı. Yer kimliği kullanarak bir yere referans verme hakkında daha fazla bilgi edinin.
  • rating: Toplam kullanıcı yorumlarına göre 0, 0 ile 5, 0 arasında bir yer.
  • reviews beş adede kadar inceleme dizisi. Her yorum birkaç bileşenden oluşur:
    • aspects[], her biri tesisin tek bir özelliğinin puanını sağlayan PlaceAspectRating nesne dizisi içerir. Dizideki ilk nesne birincil en boy olarak kabul edilir. Her PlaceAspectRating şu şekilde tanımlanır:
      • type puan verilen özelliğin adı. Şu türler desteklenir: appeal, atmosphere, decor, facilities, food, overall, quality ve service.
      • rating Kullanıcının bu özellikle ilgili 0 ile 3 arasındaki puanı.
    • author_name Yorumu gönderen kullanıcının adı. Anonim yorumlar "Google kullanıcısı" ile ilişkilendirilir. Bir dil parametresi ayarlandıysa "Google kullanıcısı" ifadesi, yerelleştirilmiş bir dize döndürür.
    • author_url URL'yi (varsa), kullanıcıların Google+ profiline ekleyin.
    • language Kullanıcının yorumunda kullanılan dili belirten bir IETF dil kodu. Bu alan, yalnızca ana dil etiketini içerir, ülke veya bölgeyi belirten ikincil etiketi içermez. Örneğin, tüm İngilizce yorumlar "en-AU" veya "en-UK" olarak değil, "en" olarak etiketlenir.
    • rating Kullanıcının bu yere verdiği genel puan. Bu, 1 ile 5 arasında değişen bir tam sayıdır.
    • text kullanıcı yorumu Google Rehber'de bir konumu incelerken metin yorumları isteğe bağlı olarak kabul edilir. Bu nedenle, bu alan boş bırakılabilir.
  • types Bu yer için bir dizi tür (ör. ["political", "locality"] veya ["restaurant", "lodging"]). Bu dizi, birden fazla değer içerebilir veya boş olabilir. Yeni değerler, önceden bildirimde bulunulmaksızın sunulabilir. Desteklenen türlerin listesini inceleyin.
  • url: Bu yerin resmi Google sayfasının URL'si. Bu sayfa, yerle ilgili mevcut en iyi bilgileri içeren, Google'a ait sayfadır. Uygulamalar, kullanıcıya yerle ilgili ayrıntılı sonuçların gösterildiği herhangi bir ekrana bu sayfayı bağlantı vermeli veya yerleştirmelidir.
  • vicinity: Sokak adı, sokak numarası ve konum bilgisi dahil olmak üzere bölge için basitleştirilmiş bir adrestir ancak il/eyalet, posta kodu veya ülke bilgisi dahil değildir. Örneğin, Google'ın Sydney, Avustralya ofisinin vicinity değeri 5/48 Pirrama Road, Pyrmont olur. vicinity özelliği yalnızca Yakındaki Arama için döndürülür.
  • website, bu yerin yetkili web sitesini (ör. bir işletmenin ana sayfası) listeler.

Not: Çok boyutlu derecelendirmeler tüm konumlar için kullanılamayabilir. Çok az sayıda yorum varsa ayrıntılar yanıtı 0,0-5,0 ölçeğinde eski bir puan (varsa) veya hiç puan içermez.

Yer Kimliği içeren bir yere referans verme

Yer kimliği, bir Google Haritalar'daki bir yere yapılan benzersiz referanstır. Yer kimlikleri; işletmeler, önemli noktalar, parklar ve kavşaklar dahil olmak üzere çoğu konum için kullanılabilir.

Uygulamanızda bir yer kimliği kullanmak için öncelikle kimliği arayın. Yer kimliğini, Yer Arama veya Ayrıntılar isteğinin PlaceResult bölümünde bulabilirsiniz. Daha sonra, Yer Ayrıntıları için bu yer kimliğini kullanabilirsiniz.

Yer kimlikleri, Google Haritalar Platformu Hizmet Şartları'nın Bölüm 3.2.3(b) bölümünde belirtilen önbelleğe alma kısıtlamalarından hariçtir. Bu nedenle, yer kimliği değerlerini daha sonra kullanmak üzere saklayabilirsiniz. Yer kimliklerini depolamayla ilgili en iyi uygulamalar için yer kimliğine genel bakış bölümünü inceleyin.

var map;

function initialize() {
  // Create a map centered in Pyrmont, Sydney (Australia).
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -33.8666, lng: 151.1958},
    zoom: 15
  });

  // Search for Google's office in Australia.
  var request = {
    location: map.getCenter(),
    radius: '500',
    query: 'Google Sydney'
  };

  var service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

// Checks that the PlacesServiceStatus is OK, and adds a marker
// using the place ID and location from the PlacesService.
function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var marker = new google.maps.Marker({
      map: map,
      place: {
        placeId: results[0].place_id,
        location: results[0].geometry.location
      }
    });
  }
}

google.maps.event.addDomListener(window, 'load', initialize);

Yerin Fotoğrafları

Yer Fotoğrafı özelliği, sitenize yüksek kaliteli fotoğraf içeriği eklemenize olanak tanır. Fotoğraf hizmeti, Yerler ve Google+ Yerel veritabanında depolanan milyonlarca fotoğrafa erişmenizi sağlar. Yer Ayrıntıları isteğini kullanarak yer bilgileri aldığınızda, alakalı fotoğraf içeriği için fotoğraf referansları döndürülür. Yakındaki Arama ve Metin Arama istekleri, ilgili olduğunda her yer için tek bir fotoğraf referansı da döndürür. Ardından, Fotoğraflar hizmetini kullanarak referans verilen fotoğraflara erişebilir ve resmi, uygulamanız için en uygun boyutta olacak şekilde yeniden boyutlandırabilirsiniz.

PlacesService için yapılan herhangi bir getDetails(), textSearch() veya nearbySearch() isteği için PlaceResult nesnesinin parçası olarak bir PlacePhoto nesnesi dizisi döndürülür.

Not: Döndürülen fotoğraf sayısı isteğe göre değişir.

  • Yakındaki Arama veya Metin Arama, en fazla bir PlacePhoto nesnesi döndürür.
  • Ayrıntılar isteği en fazla on PlacePhoto nesne döndürür.

PlacePhoto.getUrl() yöntemini çağırıp geçerli bir PhotoOptions nesnesi ileterek ilişkili resmin URL'sini isteyebilirsiniz. PhotoOptions nesnesi, resmin istenen maksimum yüksekliğini ve genişliğini belirtmenize olanak tanır. Hem maxHeight hem de maxWidth için bir değer belirtirseniz fotoğraf hizmeti, orijinal en boy oranını koruyarak resmi iki boyuttan daha küçük olacak şekilde yeniden boyutlandırır.

Aşağıdaki kod snippet'i bir yer nesnesini kabul eder ve fotoğraf varsa haritaya bir işaretçi ekler. Varsayılan işaretçi resmi, fotoğrafın küçük bir sürümüyle değiştirilir.

function createPhotoMarker(place) {
  var photos = place.photos;
  if (!photos) {
    return;
  }

  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location,
    title: place.name,
    icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35})
  });
}

Fotoğraf hizmeti tarafından döndürülen fotoğraflar, işletme sahipleri ve kullanıcıların katkıda bulunduğu fotoğraflar gibi çeşitli konumlardan alınır. Çoğu durumda, bu fotoğraflar atıf olmadan kullanılabilir veya gerekli ilişkilendirmeyi resmin bir parçası olarak içerir. Ancak, döndürülen photo öğesi html_attributions alanında bir değer içeriyorsa resmi gösterdiğiniz her yerde uygulamanıza ek ilişkilendirmeyi eklemeniz gerekir.