Yerler Kitaplığı

Avrupa Ekonomik Alanı'ndaki (AEA) geliştiriciler

Genel Bakış

Places Library, Maps JavaScript API'deki işlevler, uygulamanızın tanımlı bir alan (ör. haritanın sınırları) veya sabit bir nokta içinde yer alan yerleri (bu API'de işletmeler, coğrafi konumlar veya önemli yerler olarak tanımlanır) aramasını sağlar.

Places API, uygulamalarınıza Google Haritalar arama alanının yazarken arama davranışını kazandırmak için kullanabileceğiniz bir otomatik tamamlama özelliği sunar. Kullanıcı bir adres yazmaya başladığında otomatik tamamlama, geri kalanını doldurur. Daha fazla bilgi için otomatik tamamlama belgelerine bakın.

Başlarken

Maps JavaScript API veya JavaScript hakkında bilgi sahibi değilseniz başlamadan önce JavaScript ve API anahtarı alma konularını incelemenizi öneririz.

Kitaplığı yükleme

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

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

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

Places API'yi (eski) 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ırlandırır. API anahtarıyla ilişkili bir API veya SDK'ya gönderilen istekler işlenir. API anahtarıyla ilişkili olmayan bir API veya SDK'ya gönderilen istekler başarısız olur. Bir API anahtarını Places Library, Maps JavaScript API ile kullanılacak şekilde kısıtlamak için:
  1. Google Cloud Console'a gidin.
  2. Proje açılır listesini 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ın ve 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ıtlayın ve yeniden adlandırın sayfasında kısıtlamaları ayarlayın:
    • API kısıtlamaları
      • Anahtarı kısıtla'yı seçin.
      • API'leri seçin'i tıklayın ve hem Maps JavaScript API'yi hem de Places API (Eski)'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

Places Library, Places API'nin Kullanım Sınırları dokümanlarında açıklandığı gibi Places API ile bir kullanım kotasını paylaşır.

Politikalar

Places Library, Maps JavaScript API'nin kullanımı, Places API için açıklanan politikalara uygun olmalıdır.

Yer Aramaları

Places hizmetiyle aşağıdaki arama türlerini gerçekleştirebilirsiniz:

Döndürülen bilgiler; restoranlar, mağazalar ve ofisler gibi işletmelerin yanı sıra adresleri, kasaba ve şehirler gibi idari bölgeleri ve diğer önemli yerleri gösteren "coğrafi kod" sonuçlarını içerebilir.

Find Place (Legacy) istekleri

Yer Bulma isteği, metin sorgusu veya telefon numarasıyla yer 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. Sorgudan Yer Bulma isteği göndermek için PlacesService nesnesinin findPlaceFromQuery() yöntemini çağırın. Bu yöntem aşağıdaki parametreleri alır:

  • query (gerekli) Aranacak metin dizesi (ör. "restoran" veya "123 Main Street"). Bu bir yer adı, adres veya işletme kategorisi olmalıdır. Diğer giriş türleri hatalara neden olabilir ve geçerli sonuçlar döndürmeyebilir. Places API, bu dizeye göre eşleşme adayları döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar.
  • fields (gerekli) Döndürülecek yer verilerinin türlerini belirten bir veya daha fazla alan.
  • locationBias (isteğe bağlı) Aranacak alanı tanımlayan koordinatlar. Bu, aşağıdakilerden biri olabilir:

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

Aşağıdaki örnekte, "Museum of Contemporary Art Australia"yı arayan ve name ile geometry alanlarını içeren bir findPlaceFromQuery() çağrısı gösterilmektedir.

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 Bulma, bir telefon numarası alır ve bir yer döndürür. Telefon Numarasından Yer Bulma isteği göndermek için PlacesService'ın findPlaceFromPhoneNumber() yöntemini çağırın. Bu yöntem aşağıdaki parametreleri alır:

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

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

Alanlar (Find Place 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, İletişim ve Atmosfer. Temel alanlar, taban ücret üzerinden faturalandırılır ve ek ücret alınmaz. alanları daha yüksek bir ücretle faturalandırılır. Daha fazla bilgi için fiyatlandırma sayfasına bakı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 kategorisi aşağıdaki alanları içerir:
business_status, formatted_address, geometry, icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (desteği sonlandırıldı), photos, place_id, plus_code, types

İletişim

İletişim kategorisi aşağıdaki alanı içerir: opening_hours
(Maps JavaScript API'deki Places Library'de desteği sonlandırıldı. opening_hours sonuçlarını almak için Yer Ayrıntıları isteğini kullanın.

Atmosfer

Atmosfer kategorisi aşağıdaki alanları içerir: price_level, rating, user_ratings_total

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

Konum tercihi ayarlama (Find Place yöntemleri)

Yer Bulma'nın belirli bir bölgedeki sonuçları tercih etmesini sağlamak için locationBias parametresini kullanın. locationBias özelliğini aşağıdaki yöntemlerle ayarlayabilirsiniz:

Sonuçları belirli bir bölgeye göre önceliklendirme:

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

Arama yapılacak dikdörtgen bir alan tanımlayın:

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

LatLngBounds da kullanabilirsiniz.

Belirli bir alanı merkeze alan bir arama yarıçapı (metre cinsinden) tanımlayın:

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

Yakında Arama İstekleri

Yakında Arama, belirli bir bölgedeki yerleri anahtar kelimeye veya türe göre aramanıza olanak tanır. Yakında Arama her zaman bir konum içermelidir. Bu konum, iki yöntemden biriyle belirtilebilir:

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

Yakında Arama, PlacesService'ın nearbySearch() yöntemine yapılan bir çağrıyla başlatılır. Bu yöntem, PlaceResult nesnelerinden oluşan bir dizi döndürür. nearbySearch() yöntemi, 3.9 sürümünden itibaren search() yönteminin yerini almıştır.

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

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

  • Aşağıdakilerden biri:
    • bounds: Dikdörtgen arama alanını tanımlayan bir google.maps.LatLngBounds nesnesi olmalıdır. Sınır alanı için desteklenen maksimum çapraz mesafe yaklaşık 100.000 metredir.
    • location ve radius. İlki bir google.maps.LatLng nesnesi, ikincisi ise dairenin metre cinsinden yarıçapını temsil eden basit bir tam sayı alır. İzin verilen maksimum yarıçap 50.000 metredir. rankBy, DISTANCE olarak ayarlandığında location belirtmeniz gerekir 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çerikleri dahil ancak bunlarla sınırlı olmamak üzere mevcut tüm alanlarla eşleştirilecek bir terim.
  • 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 fiyatlı) ile 4 (en pahalı) arasındadır (bu değerler dahil).
  • 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 iletilir.
  • openNow (isteğe bağlı): Places hizmetinin yalnızca sorgunun gönderildiği sırada açık olan yerleri döndürmesi gerektiğini belirten bir boole değeri. Sorgunuza bu parametreyi dahil ederseniz Google Places veritabanında çalışma saatleri belirtilmeyen yerler döndürülmez. openNow politikasını false olarak ayarlamanın bir etkisi yoktur.
  • rankBy (isteğe bağlı): Sonuçların listeleneceği sırayı belirtir. Olası değerler:
    • google.maps.places.RankBy.PROMINENCE (varsayılan). Bu seçenek, sonuçları önem derecelerine göre sıralar. Sıralama, belirlenen yarıçap içindeki belirgin yerleri, eşleşen ancak daha az belirgin olan yakındaki yerlere tercih eder. Önem, bir yerin Google dizinindeki sıralamasından, küresel popülerliğinden ve diğer faktörlerden etkilenebilir. google.maps.places.RankBy.PROMINENCE belirtildiğinde radius parametresi gereklidir.
    • google.maps.places.RankBy.DISTANCE. Bu seçenek, sonuçları belirtilen location değerine olan uzaklıklarına göre artan düzende sıralar (gerekli). RankBy.DISTANCE değerini belirtirseniz özel bounds ve/veya radius değerlerini belirtemeyeceğinizi unutmayın. RankBy.DISTANCE özelliğini belirttiğinizde keyword, name veya type özelliklerinden en az birini belirtmeniz gerekir.
  • type: Sonuçları, belirtilen türle eşleşen yerlerle kısıtlar. Yalnızca bir tür belirtilebilir (birden fazla tür sağlanırsa ilk girişten sonraki tüm türler yoksayılır). Desteklenen türlerin listesine bakın.

Ayrıca, sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için nearbySearch() yöntemine 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örüntüleyin

Metin Arama İstekleri

Google Places Text Search hizmeti, bir dizeye (ör. "New York'ta pizza" veya "Ottawa yakınlarındaki ayakkabı mağazaları") göre bir dizi yer hakkında bilgi döndüren bir web hizmetidir. Hizmet, metin dizesiyle ve ayarlanmış konum tercihiyle eşleşen yerlerin listesini döndürür. Arama yanıtı, yerlerin listesini içerir. Yanıttaki yerlerden herhangi biri hakkında daha fazla bilgi edinmek için Yer Ayrıntıları isteği gönderebilirsiniz.

Metin aramaları, PlacesService öğesinin textSearch() yöntemine yapılan bir çağrıyla 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 (gerekli) Aranacak metin dizesi (ör. "restoran" veya "123 Main Street"). Bu, bir yer adı, adres veya işletme kategorisi olmalıdır. Diğer giriş türleri hatalara neden olabilir ve geçerli sonuçlar döndürmeyebilir. Places hizmeti, bu dizeye göre eşleşme adaylarını döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar. Arama isteğinde type parametresi de kullanılıyorsa bu parametre isteğe bağlı hale gelir.
  • İsteğe bağlı:
    • openNow: Places hizmetinin yalnızca sorgunun gönderildiği sırada açık olan yerleri döndürmesi gerektiğini belirten bir boole değeri. Sorgunuza bu parametreyi dahil ederseniz Google Places veritabanında çalışma saatleri belirtilmeyen yerler döndürülmez. openNow politikasını false değerine ayarlamanın bir etkisi yoktur.
    • minPriceLevel ve maxPriceLevel : Sonuçları yalnızca belirtilen fiyat düzeyindeki yerlerle kısıtlar. Geçerli değerler 0 (en uygun fiyatlı) ile 4 (en pahalı) arasındadır (bu değerler dahil).
    • Aşağıdakilerden biri:
      • bounds: Dikdörtgen arama alanını tanımlayan bir google.maps.LatLngBounds nesnesi olmalıdır. Sınır alanı için desteklenen maksimum çapraz mesafe yaklaşık 100.000 metredir.
      • location ve radius: location ve radius parametrelerini ileterek sonuçları belirli bir daireye yönlendirebilirsiniz. Bu, Places hizmetine bu daire içindeki sonuçları göstermeyi tercih etmesini söyler. Tanımlanan alanın dışındaki sonuçlar gösterilmeye devam edebilir. Konum bir google.maps.LatLng nesnesi alır 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 kısıtlar. Yalnızca bir tür belirtilebilir (birden fazla tür sağlanırsa ilk girişten sonraki tüm türler yoksayılır). Desteklenen türlerin listesine bakın.

Ayrıca, sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için textSearch() yöntemine 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 bulmanıza yardımcı olacak hata ayıklama bilgilerini 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 PlacesService'i kullanmasına izin verilmiyor.
  • UNKNOWN_ERROR: PlacesService 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, PlaceResult nesnelerinden oluşan bir dizi döndürür.

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

  • business_status, işletme ise yerin faaliyet 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 okunabilir adresini içeren bir dizedir. formatted_address özelliği yalnızca Text Search için döndürülür.

    Bu adres genellikle posta adresiyle aynıdır. Birleşik Krallık gibi bazı ülkelerde, lisans kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini unutmayın.

    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" (sokak numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

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

  • geometry: Yerin geometriyle ilgili bilgileri. Bu bilgiler aşağıdakileri içerebilir:
    • location, yerin enlem ve boylamını sağlar.
    • viewport, bu yer görüntülenirken haritada tercih edilen görüntü alanını tanımlar.
  • permanently_closed (desteği sonlandırıldı), yerin kalıcı veya geçici olarak kapatılıp kapatılmadığını belirten bir Boole işaretidir (değer true). permanently_closed kullanmayın. Bunun yerine, işletmelerin faaliyet durumunu öğrenmek için business_status kullanın.
  • plus_code (Açık Konum Kodu ve Plus Code'lara bakın), enlem ve boylam koordinatlarından türetilen ve bir alanı temsil eden kodlanmış bir konum referansıdır: Bir derecenin 1/8.000'i x bir derecenin 1/8.000'i (ekvatorda yaklaşık 14 m x 14 m) veya daha küçük. Plus Code'lar, açık adreslerin bulunmadığı yerlerde (binaların numaralandırılmadığı veya sokakların adlandırılmadığı yerler) açık adreslerin yerine kullanılabilir.

    Plus Code, global kod ve bileşik kod olarak biçimlendirilir:

    • global_code, 4 karakterlik bir alan kodu ve 6 karakter veya daha uzun bir yerel koddan (849VCWC8+R9) oluşur.
    • compound_code, açık bir konum içeren 6 karakter veya daha uzun bir yerel koddur (CWC8+R9, Mountain View, CA, ABD). Bu içeriği programatik olarak ayrıştırmayın.
    Genellikle hem global kod hem de bileşik kod döndürülür. Ancak sonuç uzak bir konumdaysa (ör. okyanus veya çöl) yalnızca global kod döndürülebilir.
  • html_attributions: Arama sonuçlarını gösterirken görüntülemeniz gereken ilişkilendirme dizisi. Dizideki her giriş, tek bir ilişkilendirme için HTML metni içerir. Not: Bu, tüm arama yanıtı için tüm atıfların bir toplamıdır. Bu nedenle, yanıttaki tüm PlaceResult nesneleri aynı ilişkilendirme listelerini içerir.
  • icon, renkli bir 71 piksel x 71 piksel PNG simgesinin URL'sini döndürür.
  • icon_mask_base_uri, renksiz bir simgenin ana URL'sini .svg veya .png uzantısı olmadan döndürür.
  • icon_background_color, yerin kategorisi için varsayılan onaltılık 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ı belirten bir Boole değeridir (Yerler Kitaplığı, Maps JavaScript API'de kullanımdan kaldırılmıştır, bunun yerine utc_offset_minutes kullanın).
  • place_id, bir yeri benzersiz şekilde tanımlayan metin tabanlı bir tanımlayıcıdır. Yerle ilgili bilgileri almak için bu tanımlayıcıyı Yer Ayrıntıları isteğinde iletin. Bir yere yer kimliğiyle referans verme hakkında daha fazla bilgi edinin.
  • rating, toplu kullanıcı yorumlarına göre yerin 0,0 ile 5,0 arasındaki puanını içerir.
  • types Bu yerin türlerini içeren bir dizi (ör. ["political", "locality"] veya ["restaurant", "lodging"]). Bu dizi birden fazla değer içerebilir veya boş olabilir. Yeni değerler önceden bildirimde bulunulmadan kullanıma sunulabilir. Desteklenen türlerin listesine bakın.
  • vicinity: Sokak adı, sokak numarası ve bölgeyi içeren ancak eyalet/il, posta kodu veya ülkeyi içermeyen basitleştirilmiş adres. Örneğin, Google'ın Sidney, Avustralya ofisinin vicinity değeri 5/48 Pirrama Road, Pyrmont.

Ek sonuçlara erişme

Varsayılan olarak, her yer arama sorgu başına en fazla 20 sonuç döndürür. Ancak her arama, üç sayfaya bölünmüş 60'a kadar sonuç döndürebilir. PlaceSearchPagination nesnesi kullanılarak ek sayfalara erişilebilir. Ek sayfalara erişmek için geri çağırma işlevi kullanarak PlaceSearchPagination nesnesini yakalamanız gerekir. PlaceSearchPagination nesnesi şu şekilde tanımlanır:

  • hasNextPage, başka sonuçların olup olmadığını gösteren bir boole özelliğidir. Ek sonuç sayfası olduğunda true.
  • nextPage() sonraki sonuç grubunu döndürecek bir işlev. Bir arama yaptıktan sonra, sonuçların bir sonraki sayfasının kullanılabilir olması için iki saniye beklemeniz gerekir.

Sonraki sonuç grubunu görmek için nextPage yöntemini çağırın. Sonraki sonuç sayfası gösterilmeden önce her sonuç sayfası gösterilmelidir. Her aramanın, kullanım sınırlarınız açısından tek bir istek olarak sayıldığını unutmayın.

Aşağıdaki örnekte, birden fazla arama isteği gönderebilmek için PlaceSearchPagination nesnesini yakalamak üzere geri çağırma işlevinizi nasıl değiştireceğiniz 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örüntüleyin

Yer Ayrıntıları

Places hizmeti, bir bölgedeki yerlerin listesini sağlamanın yanı sıra belirli bir yer hakkında ayrıntılı bilgi de döndürebilir. Bir yer, yer arama yanıtında döndürüldükten sonra yer kimliği kullanılarak söz konusu yerle ilgili tam adres, telefon numarası, kullanıcı puanı ve yorumlar gibi ek bilgiler istenebilir.

Yer Ayrıntıları İstekleri

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

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

Bu yöntem, bir yerin placeId değerini ve döndürülecek Yerler verisi türlerini belirten alanları içeren bir istek alır. Bir yere yer kimliğiyle nasıl referans vereceğiniz 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örüntüleyin

Alanlar (Yer ayrıntıları)

fields parametresi, bir dize dizisi (alan adları) 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ılır: Basic, Contact ve Atmosphere. Temel alanlar, taban ücret üzerinden faturalandırılır ve ek ücret alınmaz. İletişim ve Atmosfer alanları daha yüksek bir ücretle faturalandırılır. Daha fazla bilgi için fiyatlandırma sayfasına bakın. İlişkilendirmeler (html_attributions), istenip istenmediğine bakılmaksızın her çağrıyla birlikte her zaman döndürülür.

Temel

Temel kategorisi aşağıdaki alanları içerir:
address_components, adr_address, business_status, formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (desteği sonlandırıldı), photo, place_id, plus_code, type, url, utc_offset (Places Library, Maps JavaScript API'de desteği sonlandırıldı), utc_offset_minutes, vicinity

İletişim

İletişim kategorisi aşağıdaki alanları içerir:
formatted_phone_number, international_phone_number, opening_hours, website

Atmosfer

Atmosfer kategorisi aşağıdaki alanları içerir: price_level, rating, reviews, user_ratings_total

Yer alanları hakkında daha fazla bilgi edinin. Yer verisi isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi için Kullanım ve Faturalandırma başlıklı makaleyi inceleyin.

Yer Ayrıntıları 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 bulmanıza yardımcı olacak hata ayıklama bilgilerini 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 Referans verilen konum, Yerler veritabanında bulunamadı.
  • REQUEST_DENIED: Web sayfasının PlacesService'i kullanmasına izin verilmiyor.
  • UNKNOWN_ERROR: PlacesService 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. Adres bileşeni için bilinen bir tür yoksa adres bileşeninin tür dizisi boş olabilir. API, gerektiğinde yeni tür değerleri ekleyebilir. Daha fazla bilgi için Adres türleri ve adres bileşeni türleri başlıklı makaleyi inceleyin.
    • long_name, Geocoder tarafından döndürülen adres bileşeninin tam metin açıklaması veya adıdır.
    • short_name, varsa adres bileşeninin kısaltılmış metin adıdır. Örneğin, Alaska eyaleti için bir adres bileşeninin long_name değeri "Alaska" ve short_name değeri, 2 harfli posta kısaltması kullanılarak "AK" olabilir.

    address_components[] dizisiyle ilgili aşağıdaki bilgileri göz önünde bulundurun:

    • Adres bileşenleri dizisi, formatted_address değerinden daha fazla bileşen içerebilir.
    • Dizi, formatted_address içinde yer alanlar dışında, adres içeren tüm siyasi varlıkları içermeyebilir. Belirli bir adresi içeren tüm siyasi varlıkları almak için tersine coğrafi kodlama kullanmanız ve adresin enlem/boylamını isteğe parametre olarak iletmeniz gerekir.
    • Yanıt biçiminin istekler arasında aynı kalacağı garanti edilmez. Özellikle address_components sayısı, istenen adrese göre değişir ve aynı adres için zaman içinde değişebilir. Bir bileşen, dizideki konumunu değiştirebilir. Bileşenin türü değişebilir. Belirli bir bileşen sonraki bir yanıtta eksik olabilir.
  • business_status, işletme ise yerin faaliyet 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 insanlar tarafından okunabilen adresi.

    Bu adres genellikle posta adresiyle aynıdır. Birleşik Krallık gibi bazı ülkelerde, lisans kısıtlamaları nedeniyle gerçek posta adreslerinin dağıtımına izin verilmediğini unutmayın.

    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" (sokak numarası), "8th Avenue" (rota), "New York" (şehir) ve "NY" (ABD eyaleti).

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

  • formatted_phone_number: Yerin telefon numarası, numaranın bölgesel kuralına göre biçimlendirilmiş.
  • geometry: Yerin geometriyle ilgili bilgileri. Bu bilgiler aşağıdakileri içerebilir:
    • location, yerin enlem ve boylamını sağlar.
    • viewport, bu yer görüntülenirken haritada tercih edilen görüntü alanını tanımlar.
  • permanently_closed (desteği sonlandırıldı), yerin kalıcı veya geçici olarak kapatılıp kapatılmadığını belirten bir Boole işaretidir (değer true). permanently_closed kullanmayın. Bunun yerine, işletmelerin faaliyet durumunu öğrenmek için business_status kullanın.
  • plus_code (Açık Konum Kodu ve Plus Code'lara bakın), enlem ve boylam koordinatlarından türetilen ve bir alanı temsil eden kodlanmış bir konum referansıdır: Bir derecenin 1/8.000'i x bir derecenin 1/8.000'i (ekvatorda yaklaşık 14 m x 14 m) veya daha küçük. Plus Code'lar, açık adreslerin bulunmadığı yerlerde (binaların numaralandırılmadığı veya sokakların adlandırılmadığı yerler) açık adreslerin yerine kullanılabilir.

    Plus Code, global kod ve bileşik kod olarak biçimlendirilir:

    • global_code, 4 karakterlik bir alan kodu ve 6 karakter veya daha uzun bir yerel koddan (849VCWC8+R9) oluşur.
    • compound_code, açık bir konum içeren 6 karakter veya daha uzun bir yerel koddur (CWC8+R9, Mountain View, CA, ABD). Bu içeriği programatik olarak ayrıştırmayın.
    Genellikle hem global kod hem de bileşik kod döndürülür. Ancak sonuç uzak bir konumdaysa (ör. okyanus veya çöl) yalnızca global kod döndürülebilir.
  • html_attributions: Bu yer sonucu için gösterilecek atıf metni.
  • icon: Bu yerin türünü temsil etmek için kullanılabilecek bir resim kaynağının URL'si.
  • international_phone_number, yerin telefon numarasını uluslararası standartta içerir. Uluslararası standart, ülke kodunu içerir ve artı (+) işaretiyle başlar. Örneğin, Google'ın Sidney, Avustralya ofisinin international_phone_number değeri +61 2 9374 4000'dir.
  • name: Yerin adı.
  • utc_offset Maps JavaScript API'deki Places Library'de desteği sonlandırıldı. Bunun yerine utc_offset_minutes kullanın.
  • utc_offset_minutes, bu yerin geçerli saat diliminin UTC'den farkını dakika cinsinden içerir. Örneğin, yaz saati uygulaması sırasında Sydney, Avustralya'daki yerler için bu değer 660 (UTC'den +11 saat) ve yaz saati uygulaması dışında Kaliforniya'daki yerler için bu değer -480 (UTC'den -8 saat) olur.
  • opening_hours aşağıdaki bilgileri içerir:
    • open_now (Places Library, Maps JavaScript API'de kullanımdan kaldırıldı; bunun yerine opening_hours.isOpen() kullanın. isOpen alanını Yer Ayrıntıları ile nasıl kullanacağınızı öğrenmek için Places API'de (Eski) çalışma saatlerini öğrenme videosunu izleyin. `open_now`, yerin şu anda açık olup olmadığını belirten bir boole değeridir.
    • periods[], pazar gününden başlayarak kronolojik sırayla yedi günü kapsayan çalışma saatleri dizisidir. 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 başlayarak haftanın günlerine karşılık gelen 0-6 arasında bir sayıdır. Örneğin, 2 değeri salı gününü ifade eder.
        • time, 24 saatlik ssdd biçiminde bir saat 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ü yer almaz. Uygulamalar, her zaman açık durumunun, değeri 0 olan day ve değeri 0000 olan time içeren ve close içermeyen bir open dönemi olarak temsil edilmesine güvenebilir.
    • weekday_text, haftanın her günü için biçimlendirilmiş çalışma saatlerini temsil eden yedi dizeden oluşan bir dizidir. Yer Ayrıntıları isteğinde bir language parametresi belirtilmişse Places Service, çalışma 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 günü başlarken bazılarında pazar günü başlar.
  • permanently_closed (desteği sonlandırıldı), yerin kalıcı veya geçici olarak kapatılıp kapatılmadığını belirten bir Boole işaretidir (değer true). permanently_closed kullanmayın. Bunun yerine, işletmelerin faaliyet durumunu öğrenmek için business_status kullanın.
  • photos[]: PlacePhoto nesneleri dizisi. PlacePhoto, getUrl() yöntemiyle fotoğraf çekmek için 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 atıf metni.
  • place_id: Bir yeri benzersiz şekilde tanımlayan ve Yer Ayrıntıları isteği kullanarak yerle ilgili bilgi almak için kullanılabilen metin tabanlı bir tanımlayıcı. Bir yere yer kimliğiyle referans verme hakkında daha fazla bilgi edinin.
  • rating: Toplu kullanıcı yorumlarına göre yerin 0, 0 ile 5, 0 arasındaki puanı.
  • reviews En fazla beş yorumdan oluşan bir dizi. Her inceleme birkaç bileşenden oluşur:
    • aspects[], her biri işletmenin tek bir özelliğinin puanını sağlayan PlaceAspectRating nesnelerinden oluşan bir dizi içerir. Dizideki ilk nesne, birincil özellik olarak kabul edilir. Her bir PlaceAspectRating şu şekilde tanımlanır:
      • type, değerlendirilen özelliğin adıdır. Şu türler desteklenir: appeal, atmosphere, decor, facilities, food, overall, quality ve service.
      • rating Kullanıcının bu belirli özellik için verdiği puan (0 ile 3 arasında).
    • author_name Yorumu gönderen kullanıcının adı. Anonim yorumlar "Bir Google kullanıcısı"na atfedilir. Bir dil parametresi ayarlanmışsa "Bir Google kullanıcısı" ifadesi yerelleştirilmiş bir dize döndürür.
    • author_url Varsa kullanıcının Google+ profilinin URL'si.
    • 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.
    • Kullanıcının bu yer için verdiği genel puan: rating. Bu, 1 ile 5 arasında bir tam sayıdır.
    • Kullanıcının yorumunu text. Google Places ile bir yeri incelerken metin yorumları isteğe bağlı olarak kabul edilir. Bu nedenle, bu alan boş olabilir.
  • types Bu yerin türlerini içeren bir dizi (ör. ["political", "locality"] veya ["restaurant", "lodging"]). Bu dizi birden fazla değer içerebilir veya boş olabilir. Yeni değerler önceden bildirimde bulunulmadan kullanıma sunulabilir. Desteklenen türlerin listesine bakın.
  • url: Bu yerin resmi Google sayfasının URL'si. Bu, Google'a ait olan ve yerle ilgili mevcut en iyi bilgileri içeren sayfadır. Uygulamalar, kullanıcıya yerle ilgili ayrıntılı sonuçlar gösteren tüm ekranlarda bu sayfaya bağlantı vermeli veya bu sayfayı yerleştirmelidir.
  • vicinity: Sokak adı, sokak numarası ve bölgeyi içeren ancak eyalet/il, posta kodu veya ülkeyi içermeyen basitleştirilmiş adres. Örneğin, Google'ın Sidney, Avustralya ofisinin vicinity değeri 5/48 Pirrama Road, Pyrmont. vicinity özelliği yalnızca Yakında Arama için döndürülür.
  • website, bu yerin yetkili web sitesini (ör. bir işletmenin ana sayfası) listeler.

Not: Çok boyutlu puanlar tüm konumlar için kullanılamayabilir. Çok az yorum varsa ayrıntılar yanıtı, 0,0 ile 5,0 arasında eski bir puan (varsa) içerir veya hiç puan içermez.

Yer kimliğiyle bir yere referans verme

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

Uygulamanızda bir yer kimliği kullanmak için önce kimliği aramanız gerekir. Kimlik, Yer Arama veya Ayrıntılar isteğinin PlaceResult bölümünde bulunur. Ardından, Yer Ayrıntıları'nı aramak için bu yer kimliğini kullanabilirsiniz.

Yer kimlikleri, Google Haritalar Platformu Hizmet Şartları'nın Bölüm 3.2.3(b) maddesinde belirtilen önbelleğe alma kısıtlamalarından muaf tutulur. 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ış başlıklı makaleyi 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ı

Sitenize yüksek kaliteli fotoğraf içeriği eklemek için Place Photo özelliğini kullanın. 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 bilgisi aldığınızda, alakalı fotoğraf içerikleri için fotoğraf referansları döndürülür. Yakında Arama ve Metin Arama istekleri, alakalı olduğunda yer başına tek bir fotoğraf referansı da döndürür. Ardından, Fotoğraf hizmetini kullanarak referans verilen fotoğraflara erişebilir ve resmi uygulamanız için en uygun boyuta yeniden boyutlandırabilirsiniz.

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

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

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

PlacePhoto.getUrl() yöntemini çağırıp geçerli bir PhotoOptions nesnesi ileterek ilişkili resmin URL'sini isteyebilirsiniz. Resmin maksimum yüksekliğini ve genişliğini belirtmek için PhotoOptions nesnesini kullanın. 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 olanına göre 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 da dahil olmak üzere çeşitli konumlardan alınır. Çoğu durumda bu fotoğraflar, atıf yapılmadan kullanılabilir veya gerekli atıf, resmin bir parçası olarak eklenir. 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 atıf eklemeniz gerekir.