Son zamanlarda web sitenizdeki adres otomatik tamamlama (autocomplete) özelliğiyle yaşadığımız sorunlar, Google Haritalar Platformu’nda yapılan önemli bir API değişikliğinden kaynaklanmaktadır. Kullanmaya çalıştığımız google.maps.places.Autocomplete
sınıfı ve ilgili servisler, Google’ın 1 Mart 2025 itibarıyla uygulamaya koyduğu bir politika değişikliği nedeniyle yeni API anahtarları ve projeler için kullanımdan kaldırılmıştır (deprecated). Bu, kodumuzun kendisi doğru olsa bile, API’nin arka planda isteği reddetmesine neden olmaktadır.
Temel Sorun: API Sınıfının Kullanımdan Kaldırılması (Deprecation)
- Problem: Google,
google.maps.places.Autocomplete
vegoogle.maps.places.AutocompleteService
gibi eski yöntemleri, belirli bir tarihten itibaren (1 Mart 2025) yeni Google Cloud projeleri/müşterileri için artık desteklememektedir. Konsolda gördüğünüzAPI keys with referer restrictions cannot be used with this API.
(referer kısıtlaması yokken bile çıkan) veAutocomplete is not available to new customers
uyarıları bu durumun doğrudan sonucudur. - Neden Önemli: Bu, mevcut JavaScript kodumuzun (ister otomatik konum doldurma, ister adres tamamlama için olsun) bu API’leri çağırmaya çalıştığında, Google’ın isteği geri çevirmesi anlamına gelir.
- Google’ın Yeni Önerisi: Google,
Autocomplete
yerine, özellikle bir web bileşeni (web component) olarak tasarlanmış yeni bir HTML elementi olangoogle.maps.places.PlaceAutocompleteElement
‘i önermektedir. Bu element doğrudan HTML’e<gmp-place-autocomplete>
şeklinde eklenebilir.
WordPress ve Form Builder Entegrasyonundaki Zorluk
Bu durum, Contact Form 7 veya Fluent Forms gibi WordPress form builder’ları ile entegrasyonu karmaşık hale getirmektedir:
- Form Builder Sınırlaması: Contact Form 7 veya Fluent Forms’un standart metin alanı kısa kodları (
[text*]
),<gmp-place-autocomplete>
gibi özel HTML etiketlerini doğrudan oluşturmaya izin vermez. Onlar sadece standart<input type="text">
etiketlerini yaratırlar. - Manuel Entegrasyonun Karmaşıklığı: Bu uyumsuzluk nedeniyle,
PlaceAutocompleteElement
‘i bir Contact Form 7 veya Fluent Forms metin kutusuyla entegre etmek, oldukça karmaşık ve özel JavaScript kodlaması gerektirir (var olaninput
elementini dinamik olarak değiştirmek veya Place API’den gelen veriyi sıfırdan bir UI ile göstermek gibi).
Önerilen Çözüm Yolları
Bu sorun karşısında, web sitenizde adres otomatik tamamlama özelliğini çalışır hale getirmenin pratik ve etkili yolları şunlardır:
- 1. Yol (En Hızlı ve En Güvenilir): Google Places Autocomplete Entegrasyonu Sunan Bir WordPress Eklentisi Kullanmak.
- Açıklama: WordPress eklenti havuzunda, Fluent Forms veya Contact Form 7 ile uyumlu, Google Places Autocomplete’i doğrudan entegre eden eklentiler mevcuttur. Bu eklentiler:
- Google API’deki değişiklikleri kendileri takip eder ve güncellemelerle uyumlu kalırlar.
- Karmaşık JavaScript kodlamasını (yeni
PlaceAutocompleteElement
kullanımı dahil) sizin yerinize yönetirler. - API anahtarınızı basit bir ayar alanına girmenizi sağlar.
- Faydaları: Kurulum kolaylığı, uzun vadeli bakım ve güncellik garantisi, hata ayıklama zahmetinden kurtulma.
- Dezavantajları: Çoğu zaman bu eklentilerin ücretli sürümleri veya eklentileri (add-on) bulunmaktadır.
- Açıklama: WordPress eklenti havuzunda, Fluent Forms veya Contact Form 7 ile uyumlu, Google Places Autocomplete’i doğrudan entegre eden eklentiler mevcuttur. Bu eklentiler:
- 2. Yol (Manuel ve Gelişmiş JavaScript Kodlama):
- Açıklama: Eğer ücretli bir eklenti kullanmak istemiyorsanız, Google’ın güncel Places API’lerini kullanarak (örneğin
AutocompleteService
veyaPlacesService
) adres tahminlerini manuel olarak alıp, bu tahminleri kendi JavaScript ve CSS kodunuzla sıfırdan bir açılır liste (UI) olarak göstermeniz gerekir. - Faydaları: Ücretsizdir, tam kontrol sağlar.
- Dezavantajları: Yüksek teknik bilgi ve kodlama gerektirir, hatalara açık olabilir, Google API’deki gelecekteki değişikliklere karşı sürekli bakım ve güncelleme ihtiyacı doğurur.
- Açıklama: Eğer ücretli bir eklenti kullanmak istemiyorsanız, Google’ın güncel Places API’lerini kullanarak (örneğin
Karşılaştığınız sorun, kodunuzdaki bir hatadan değil, Google Haritalar Platformu’nun API kullanımındaki bir değişiklikten kaynaklanmaktadır. Bu durumu çözmek için en pratik ve güvenilir yol, genellikle Google Places Autocomplete entegrasyonunu doğrudan sunan bir WordPress form eklentisi (veya bu eklentinin ilgili addon’u) kullanmaktır. Bu, karmaşık kodlama ve gelecekteki uyumluluk sorunlarından kaçınmanızı sağlayacaktır.
Google Places Autocomplete API’sinde yaşanan bu güncelleme, “eski” ve “yeni” API’ler arasındaki geçişi zorlaştırdığı için çok sayıda geliştiricinin karşılaştığı yaygın bir durumdur. İşte bu güncellemeyi açıklayan resmi Google dokümanlarına bağlantılar ve ne anlama geldikleri:
Google Places Autocomplete API Güncellemesi: Detaylı Açıklama
1. Temel Sorun: google.maps.places.Autocomplete
Sınıfının Yeni Müşteriler İçin Kullanımdan Kaldırılması
- Nedir? Konsolda gördüğünüz
As of March 1st, 2025, google.maps.places.Autocomplete is not available to new customers.
uyarısı, Google Maps JavaScript API içindekiAutocomplete
sınıfının belirli bir tarihten (1 Mart 2025) itibaren yeni projeler veya API anahtarları için devre dışı bırakıldığı anlamına gelir. Bu sınıf, bir input alanına otomatik tamamlama işlevselliği eklemenin “eski” ve daha basit yoluydu. - Ne Anlama Geliyor? Sizin gibi “yeni” bir API anahtarı veya projesi olan kullanıcılar, bu basit
Autocomplete
sınıfını kullanarak adres tamamlama özelliğini çalıştıramazlar. Kodunuz doğru olsa bile, API tarafında bu istekler reddedilir. - İlgili Resmi Kaynak:
- Places Autocomplete Service | Maps JavaScript API – Google for Developers (Bu sayfa genellikle
AutocompleteService
sınıfının durumunu ve deprecation notlarını içerir. Konsolunuzda daAutocompleteService
için benzer bir uyarı görüyorsunuz.) - Google Places API Legacy vs New – HivePress Community (Bu bir topluluk tartışması olsa da, aynı deprecation hatası ve tarihi hakkında net bilgiler ve etkilenen diğer API’lerden bahsediyor.)
- Places Autocomplete Service | Maps JavaScript API – Google for Developers (Bu sayfa genellikle
2. Google’ın Yeni Yaklaşımı: Place Autocomplete (New)
ve PlaceAutocompleteElement
- Nedir? Google, bu eski sınıfların yerine, Places API (New) adı verilen daha yeni bir versiyonu ve özellikle web bileşeni (
Web Component
) olarak tasarlanmışgoogle.maps.places.PlaceAutocompleteElement
‘i öneriyor. Bu, tarayıcınıza<gmp-place-autocomplete>
gibi özel bir HTML etiketi olarak entegre edilebilir. - Ne Anlama Geliyor? Yeni API daha esnek ve güçlüdür, ancak entegrasyonu “eski”
Autocomplete
sınıfına göre farklıdır ve doğrudan bir input alanına basitçe “takılamaz”. - İlgili Resmi Kaynaklar ve Geçiş Rehberleri:
- Migrate to Autocomplete (New) | Places API – Google for Developers (Bu, Places API’nin yeni versiyonuna geçiş için resmi bir rehberdir. Parametre değişikliklerini ve kullanım şekillerini açıklar.)
- Google Maps API – Migration of Autocomplete class to PlaceAutocompleteElement class – Stack Overflow (Bu bir Stack Overflow tartışması olsa da, ilgili yeni element ve geçiş hakkında önemli bilgiler ve resmi doküman linkleri içermektedir.)
- The next generation of Autocomplete is now generally available – Google Maps Platform Blog (Yeni nesil Autocomplete’in genel kullanıma sunulduğunu duyuran blog yazısı.)
3. Konsolda Gördüğünüz TypeError
(undefined is not an object
)
- Bu hata, Google’ın kendi
js
dosyasından geliyor ve genellikle bir API’nin doğru şekilde başlatılamaması veya dahili bir nesneye erişilememesi durumunda ortaya çıkar. Yukarıdaki deprecation sorunu nedeniyle API’nin düzgün başlatılamaması buTypeError
‘a yol açabilir.
Özetle:
Karşılaştığınız sorun, Google’ın API politikasındaki bir değişiklikten kaynaklanıyor. Basit Autocomplete
sınıfı artık sizin için çalışmıyor. Yeni PlaceAutocompleteElement
‘i kullanmak ise Contact Form 7’nin (veya diğer form builder’ların) standart text input alanlarına doğrudan entegre edilemiyor.
Bu nedenle, daha önce de belirttiğim gibi, en pratik çözüm genellikle bu karmaşıklığı sizin için yöneten ve güncel kalan özel bir WordPress eklentisi kullanmak olacaktır. Aksi takdirde, yeni API elementini manuel olarak entegre etmek ve değerini CF7’ye aktarmak için oldukça karmaşık ve özel JavaScript kodlaması gerekecektir.
Dilediğiniz tasarımda profesyonel bir web sitesine ekonomik fiyatlarla sahip olmak ister misiniz?
Web tasarım kampanyamızı inceleyin, fiyat / kalite performansına şaşıracaksınız!
Google Places Autocomplete API Güncellemesi: Ne Anlama Geliyor ve Çözüm Yolları
Son zamanlarda web sitenizdeki adres otomatik tamamlama (autocomplete) özelliğiyle yaşadığımız sorunlar, Google Haritalar Platformu’nda yapılan [...]
Creatys Dijital Pazarlama, AI ve SEO Çözümleri
Creatys, özellikle Bursa ve İstanbul merkezli işletmelere yönelik geniş bir dijital pazarlama ve arama motoru [...]
İşletmeniz İçin Gerçekçi ve Uygulanabilir SEO Desteği
Arama motoru optimizasyonu, uzun vadeli görünürlük ve sağlıklı büyüme için temel bir adımdır. Creatys olarak, [...]
Yapay Zeka Neden Güven Vermiyor?
Hiç ChatGPT veya benzeri bir yapay zekâ ile konuşurken bir tuhaflık hissettiniz mi? Sanki karşınızdaki [...]
Creatys Web Tasarım Kampanyası ile Dijital Dünyaya Sağlam Bir Adım
Dijital varlığınızı oluşturmak veya yenilemek, karmaşık ve maliyetli bir süreç olmak zorunda değil. Creatys’in “Web [...]
İşimi Geliştirmek Varken Neden SEO Öğrenmek Zorundayım?
Merhaba, Ben Yılmaz. dijital dünyanın tam merkezinde, her gün yüzlerce markanın, işletmecinin ve fikrin doğuşuna, [...]
Yapay Zekâyı Dijital Pazarlama Süreçlerine Dahil Etmenin 5 Pratik Yolu
2024 itibarıyla dijital pazarlamada köklü bir değişim yaşanıyor. ChatGPT, Google Gemini, Microsoft Copilot gibi yapay [...]
Canonical Link Nedir? SEO ve Yapay Zeka Çağında Neden Bu Kadar Önemli?
Web siteniz için içerik üretiyor, anahtar kelimeler için optimize etmeye çalışıyorsunuz. Peki, aynı veya çok [...]