{"id":31478,"date":"2025-10-10T10:41:23","date_gmt":"2025-10-10T07:41:23","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31478"},"modified":"2025-10-10T10:41:23","modified_gmt":"2025-10-10T07:41:23","slug":"google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/","title":{"rendered":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 servisler, mobil uygulamalar\u0131n ve web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Kullan\u0131c\u0131lar\u0131n \u00e7evrelerindeki i\u015fletmeleri bulmas\u0131ndan, seyahat planlamas\u0131na, adres giri\u015flerinden navigasyon sistemlerine kadar bir\u00e7ok alanda konum verileri hayati rol oynamaktad\u0131r. Bu ihtiyac\u0131 kar\u015f\u0131lamak \u00fczere Google, geli\u015ftiricilere g\u00fc\u00e7l\u00fc bir ara\u00e7 seti sunar: Google Places API. Bu API, d\u00fcnya genelindeki milyonlarca yer hakk\u0131nda zengin ve g\u00fcncel verilere programatik eri\u015fim sa\u011flayarak, uygulamalar\u0131n kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde zenginle\u015ftirmesine olanak tan\u0131r.<\/p>\n<p>Bu makale, Google Places API Web Servisi&#8217;nin temel bile\u015fenlerini, nas\u0131l kullan\u0131laca\u011f\u0131n\u0131, farkl\u0131 servis t\u00fcrlerini ve pratik uygulama \u00f6rneklerini kapsaml\u0131 bir \u015fekilde ele alacakt\u0131r. API anahtar\u0131 edinme s\u00fcrecinden, \u00e7e\u015fitli arama t\u00fcrlerine, detayl\u0131 yer bilgilerini \u00e7ekmekten, otomatik tamamlama \u00f6zelliklerine kadar bir\u00e7ok konuya de\u011finece\u011fiz. Ayr\u0131ca, maliyet optimizasyonu, g\u00fcvenlik ve s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan sorunlara y\u00f6nelik \u00e7\u00f6z\u00fcmler de makalemizin \u00f6nemli bir par\u00e7as\u0131 olacakt\u0131r. Amac\u0131m\u0131z, geli\u015ftiricilerin Google Places API&#8217;yi projelerinde etkin ve verimli bir \u015fekilde kullanmalar\u0131na yard\u0131mc\u0131 olacak kapsaml\u0131 bir rehber sunmakt\u0131r.<\/p>\n<h3>Google Places API Nedir?<\/h3>\n<p>Google Places API, Google&#8217;\u0131n devasa konum veritaban\u0131na programatik olarak eri\u015fim sa\u011flayan bir web servisidir. Bu API sayesinde geli\u015ftiriciler, d\u00fcnya genelindeki i\u015fletmeler, co\u011frafi ilgi \u00e7ekici yerler, parklar, restoranlar, m\u00fczeler, oteller, al\u0131\u015fveri\u015f merkezleri ve daha bir\u00e7ok kategoriye ait milyonlarca yerin bilgilerine ula\u015fabilirler. API, bu yerlerin isimleri, adresleri, telefon numaralar\u0131, web siteleri, \u00e7al\u0131\u015fma saatleri, kullan\u0131c\u0131 de\u011ferlendirmeleri, foto\u011fraflar\u0131, co\u011frafi koordinatlar\u0131 ve hatta anl\u0131k doluluk durumlar\u0131 gibi \u00e7e\u015fitli detaylar\u0131 sunar.<\/p>\n<p><strong>Temel Tan\u0131m ve Amac\u0131:<\/strong> Places API&#8217;nin temel amac\u0131, uygulamalar\u0131n konum fark\u0131ndal\u0131\u011f\u0131n\u0131 art\u0131rarak kullan\u0131c\u0131lara daha zengin ve ba\u011flamsal deneyimler sunmakt\u0131r. \u00d6rne\u011fin, bir seyahat uygulamas\u0131, kullan\u0131c\u0131n\u0131n bulundu\u011fu yere yak\u0131n pop\u00fcler restoranlar\u0131 veya turistik yerleri g\u00f6sterebilir. Bir e-ticaret uygulamas\u0131, kullan\u0131c\u0131n\u0131n en yak\u0131n ma\u011fazas\u0131n\u0131 bulmas\u0131na yard\u0131mc\u0131 olabilir.<\/p>\n<p><strong>Sa\u011flad\u0131\u011f\u0131 Veri T\u00fcrleri:<\/strong><br \/>\n*   <strong>\u0130\u015fletme Bilgileri:<\/strong> Ad\u0131, adresi, telefon numaras\u0131, web sitesi, \u00e7al\u0131\u015fma saatleri, kategori, de\u011ferlendirmeler.<br \/>\n*   <strong>Co\u011frafi Konumlar:<\/strong> Enlem ve boylam koordinatlar\u0131.<br \/>\n*   <strong>Foto\u011fraflar:<\/strong> Yerlere ait y\u00fcksek kaliteli g\u00f6rseller.<br \/>\n*   <strong>Kullan\u0131c\u0131 De\u011ferlendirmeleri:<\/strong> Di\u011fer kullan\u0131c\u0131lar\u0131n yerler hakk\u0131ndaki yorumlar\u0131 ve puanlar\u0131.<br \/>\n*   <strong>Anl\u0131k Durum Bilgileri:<\/strong> Baz\u0131 yerler i\u00e7in anl\u0131k doluluk veya bekleme s\u00fcreleri gibi bilgiler.<br \/>\n*   <strong>Adres Bile\u015fenleri:<\/strong> Sokak, \u015fehir, posta kodu, \u00fclke gibi adresin par\u00e7alar\u0131.<\/p>\n<p><strong>Kullan\u0131m Alanlar\u0131:<\/strong><br \/>\n*   <strong>Seyahat ve Gezi Uygulamalar\u0131:<\/strong> Kullan\u0131c\u0131lara yak\u0131ndaki ilgi \u00e7ekici yerleri, otelleri, restoranlar\u0131 \u00f6nerme.<br \/>\n*   <strong>Konum Tabanl\u0131 Servisler:<\/strong> Kullan\u0131c\u0131n\u0131n konumuna g\u00f6re \u00f6zelle\u015ftirilmi\u015f i\u00e7erik sunma.<br \/>\n*   <strong>E-ticaret ve Perakende:<\/strong> En yak\u0131n ma\u011faza bulucular, teslimat adreslerinin do\u011frulanmas\u0131.<br \/>\n*   <strong>Navigasyon ve Harita Uygulamalar\u0131:<\/strong> Adres giri\u015flerini otomatik tamamlama, POI (Point of Interest) arama.<br \/>\n*   <strong>Sosyal Medya Uygulamalar\u0131:<\/strong> Kullan\u0131c\u0131lar\u0131n belirli bir yerde &#8220;check-in&#8221; yapmas\u0131na olanak tan\u0131ma.<\/p>\n<h3>Ba\u015flarken: API Anahtar\u0131 Edinme ve Proje Yap\u0131land\u0131rma<\/h3>\n<p>Google Places API&#8217;yi kullanmaya ba\u015flamadan \u00f6nce, Google Cloud Platform (GCP) \u00fczerinde bir proje olu\u015fturman\u0131z ve bir API anahtar\u0131 edinmeniz gerekmektedir. Bu anahtar, uygulaman\u0131z\u0131n Google servislerine kimli\u011fini do\u011frulamak ve kullan\u0131m\u0131n\u0131z\u0131 izlemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>1. Google Cloud Platform Hesab\u0131 Olu\u015fturma:<\/strong><br \/>\nE\u011fer bir Google hesab\u0131n\u0131z yoksa, \u00f6ncelikle bir Google hesab\u0131 olu\u015fturman\u0131z gerekmektedir. Ard\u0131ndan cloud.google.com adresine giderek Google Cloud Platform&#8217;a kaydolun. Yeni kullan\u0131c\u0131lar genellikle \u00fccretsiz deneme kredileriyle ba\u015flarlar.<\/p>\n<p><strong>2. Yeni Proje Olu\u015fturma:<\/strong><br \/>\nGCP konsoluna giri\u015f yapt\u0131ktan sonra, \u00fcst men\u00fcdeki proje se\u00e7iciyi kullanarak yeni bir proje olu\u015fturun veya mevcut bir projeyi se\u00e7in. Her API anahtar\u0131 belirli bir projeye ba\u011fl\u0131d\u0131r.<\/p>\n<p><strong>3. Places API&#8217;yi Etkinle\u015ftirme:<\/strong><br \/>\nProjenizi olu\u015fturduktan veya se\u00e7tikten sonra, sol men\u00fcden &#8220;API&#8217;ler ve Hizmetler&#8221; -> &#8220;Kitapl\u0131k&#8221; b\u00f6l\u00fcm\u00fcne gidin. Arama \u00e7ubu\u011funa &#8220;Places API&#8221; yaz\u0131n ve \u00e7\u0131kan sonu\u00e7lardan &#8220;Places API&#8221;yi se\u00e7erek &#8220;Etkinle\u015ftir&#8221; butonuna t\u0131klay\u0131n. Bu i\u015flem, projenizin Places API&#8217;yi kullanmas\u0131na izin verir.<\/p>\n<p><strong>4. API Anahtar\u0131 Olu\u015fturma ve K\u0131s\u0131tlama:<\/strong><br \/>\nAPI&#8217;yi etkinle\u015ftirdikten sonra, sol men\u00fcden &#8220;API&#8217;ler ve Hizmetler&#8221; -> &#8220;Kimlik Bilgileri&#8221; b\u00f6l\u00fcm\u00fcne gidin. &#8220;Kimlik Bilgileri Olu\u015ftur&#8221; butonuna t\u0131klay\u0131n ve &#8220;API Anahtar\u0131&#8221;n\u0131 se\u00e7in. Google otomatik olarak yeni bir API anahtar\u0131 olu\u015fturacakt\u0131r.<\/p>\n<p><strong>G\u00fcvenlik \u00d6nlemleri ve API Anahtar\u0131n\u0131 K\u0131s\u0131tlama:<\/strong><br \/>\nOlu\u015fturdu\u011funuz API anahtar\u0131, projenizin t\u00fcm Google servislerine eri\u015fim yetkisi verir. Bu nedenle, anahtar\u0131n g\u00fcvenli\u011fini sa\u011flamak kritik \u00f6neme sahiptir. API anahtar\u0131n\u0131z\u0131 k\u0131s\u0131tlaman\u0131z \u015fiddetle tavsiye edilir:<br \/>\n*   <strong>Uygulama K\u0131s\u0131tlamalar\u0131:<\/strong><br \/>\n    <em>   <strong>HTTP Referanslar\u0131 (Web siteleri):<\/strong> Anahtar\u0131n yaln\u0131zca belirli web sitelerinden (alan adlar\u0131ndan) gelen isteklere izin vermesini sa\u011flay\u0131n. \u00d6rne\u011fin, <code><\/em>.example.com\/*<\/code>.<br \/>\n    *   <strong>IP Adresleri (Web sunucular\u0131):<\/strong> Anahtar\u0131n yaln\u0131zca belirli sunucu IP adreslerinden gelen isteklere izin vermesini sa\u011flay\u0131n.<br \/>\n    *   <strong>Android Uygulamalar\u0131:<\/strong> Anahtar\u0131n belirli Android paket adlar\u0131 ve SHA-1 parmak izleri ile k\u0131s\u0131tlanmas\u0131n\u0131 sa\u011flay\u0131n.<br \/>\n    *   <strong>iOS Uygulamalar\u0131:<\/strong> Anahtar\u0131n belirli iOS paket kimlikleri ile k\u0131s\u0131tlanmas\u0131n\u0131 sa\u011flay\u0131n.<br \/>\n*   <strong>API K\u0131s\u0131tlamalar\u0131:<\/strong> Anahtar\u0131n yaln\u0131zca &#8220;Places API&#8221; gibi belirli API&#8217;leri kullanmas\u0131na izin verin. Bu, anahtar\u0131n \u00e7al\u0131nmas\u0131 durumunda yetkisiz eri\u015fimi s\u0131n\u0131rlar.<\/p>\n<p>Bu k\u0131s\u0131tlamalar, API anahtar\u0131n\u0131z\u0131n k\u00f6t\u00fcye kullan\u0131lmas\u0131n\u0131 \u00f6nleyerek potansiyel maliyet art\u0131\u015flar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7er.<\/p>\n<p><strong>5. Faturaland\u0131rma (Billing) Ayarlar\u0131:<\/strong><br \/>\nGoogle Places API, \u00fccretsiz kullan\u0131m katman\u0131na sahip olsa da, \u00e7o\u011fu kullan\u0131m senaryosu i\u00e7in bir faturaland\u0131rma hesab\u0131 gerektirir. API&#8217;yi kullanabilmek i\u00e7in projenize bir faturaland\u0131rma hesab\u0131 ba\u011flaman\u0131z \u015fartt\u0131r. Bu, &#8220;API&#8217;ler ve Hizmetler&#8221; -> &#8220;Faturaland\u0131rma&#8221; b\u00f6l\u00fcm\u00fcnden yap\u0131labilir. Google, \u00e7o\u011fu API i\u00e7in ayl\u0131k \u00fccretsiz kredi sunar, ancak bu kredileri a\u015fan kullan\u0131mlar \u00fccretlendirilir. Faturaland\u0131rma hesab\u0131n\u0131 ba\u011flamak, API isteklerinizin i\u015flenmesi i\u00e7in bir \u00f6n ko\u015fuldur.<\/p>\n<h3>Places API&#8217;nin Temel Servisleri<\/h3>\n<p>Google Places API, farkl\u0131 ihtiya\u00e7lara y\u00f6nelik \u00e7e\u015fitli servisler sunar. Bu servisler, RESTful mimarisi \u00fczerinden HTTP istekleri arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir ve JSON format\u0131nda yan\u0131tlar d\u00f6ner.<\/p>\n<h4>Place Search (Yer Arama)<\/h4>\n<p>Yer arama servisleri, belirli kriterlere g\u00f6re yerleri bulman\u0131z\u0131 sa\u011flar.<\/p>\n<p><strong>Nearby Search (Yak\u0131n \u00c7evre Aramas\u0131)<\/strong><br \/>\n*   <strong>A\u00e7\u0131klama:<\/strong> Belirli bir co\u011frafi konum (enlem\/boylam) etraf\u0131ndaki belirli bir yar\u0131\u00e7ap i\u00e7indeki yerleri bulmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong>Kullan\u0131m Senaryolar\u0131:<\/strong> &#8220;Bana en yak\u0131n restoranlar\u0131 g\u00f6ster&#8221;, &#8220;Bu otelin yak\u0131n\u0131ndaki eczaneleri bul&#8221;.<br \/>\n*   <strong>Temel Parametreler:<\/strong><br \/>\n    *   <code>location<\/code>: Araman\u0131n merkez noktas\u0131 (enlem,boylam).<br \/>\n    *   <code>radius<\/code>: Araman\u0131n yap\u0131laca\u011f\u0131 yar\u0131\u00e7ap (metre cinsinden, maksimum 50.000).<br \/>\n    *   <code>type<\/code>: Aranacak yerin t\u00fcr\u00fc (\u00f6rn. <code>restaurant<\/code>, <code>cafe<\/code>, <code>hospital<\/code>).<br \/>\n    *   <code>keyword<\/code>: Arama sonu\u00e7lar\u0131n\u0131 filtrelemek i\u00e7in anahtar kelime (\u00f6rn. &#8220;pizza&#8221;, &#8220;starbucks&#8221;).<br \/>\n    *   <code>rankby<\/code>: Sonu\u00e7lar\u0131 s\u0131ralama \u015fekli (<code>prominence<\/code> varsay\u0131lan, <code>distance<\/code> mesafe).<br \/>\n    *   <code>key<\/code>: API anahtar\u0131n\u0131z.<br \/>\n*   <strong>\u00d6rnek \u0130stek URL&#8217;si:<\/strong><\/p>\n<pre><code class=\"language-\">https:\/\/maps.googleapis.com\/maps\/api\/place\/nearbysearch\/json?location=-33.8670522,151.1957362&radius=1500&type=restaurant&key=YOUR_API_KEY<\/code><\/pre>\n<p>*   <strong>\u00d6rnek JSON Yan\u0131t\u0131 (K\u0131salt\u0131lm\u0131\u015f):<\/strong><\/p>\n<pre><code class=\"language-json\">{\n      \"results\": [\n        {\n          \"place_id\": \"ChIJN1t_tDeuEmsRUsoyG83frY4\",\n          \"name\": \"Sydney Opera House\",\n          \"geometry\": {\n            \"location\": { \"lat\": -33.8567844, \"lng\": 151.2152967 }\n          },\n          \"rating\": 4.7,\n          \"vicinity\": \"Bennelong Point, Sydney\"\n        },\n        \/\/ ... di\u011fer sonu\u00e7lar\n      ],\n      \"status\": \"OK\"\n    }<\/code><\/pre>\n<p><strong>Text Search (Metin Aramas\u0131)<\/strong><br \/>\n*   <strong>A\u00e7\u0131klama:<\/strong> Serbest metin sorgular\u0131na dayal\u0131 yerleri aramak i\u00e7in kullan\u0131l\u0131r. Daha genel aramalar i\u00e7in idealdir. &#8220;\u0130stanbul&#8217;daki en iyi kafeler&#8221;, &#8220;Ankara&#8217;da al\u0131\u015fveri\u015f merkezleri&#8221; gibi.<br \/>\n*   <strong>Kullan\u0131m Senaryolar\u0131:<\/strong> Kullan\u0131c\u0131n\u0131n yazd\u0131\u011f\u0131 metne g\u00f6re yerleri bulma.<br \/>\n*   <strong>Temel Parametreler:<\/strong><br \/>\n    *   <code>query<\/code>: Metin tabanl\u0131 arama sorgusu (\u00f6rn. &#8220;restoranlar New York&#8221;).<br \/>\n    *   <code>location<\/code>: (\u0130ste\u011fe ba\u011fl\u0131) Araman\u0131n a\u011f\u0131rl\u0131kland\u0131r\u0131laca\u011f\u0131 merkez nokta.<br \/>\n    *   <code>radius<\/code>: (\u0130ste\u011fe ba\u011fl\u0131) Konum etraf\u0131ndaki yar\u0131\u00e7ap.<br \/>\n    *   <code>type<\/code>: (\u0130ste\u011fe ba\u011fl\u0131) Yer t\u00fcr\u00fc.<br \/>\n    *   <code>key<\/code>: API anahtar\u0131n\u0131z.<br \/>\n*   <strong>\u00d6rnek \u0130stek URL&#8217;si:<\/strong><\/p>\n<pre><code class=\"language-\">https:\/\/maps.googleapis.com\/maps\/api\/place\/textsearch\/json?query=best+restaurants+in+sydney&key=YOUR_API_KEY<\/code><\/pre>\n<p>*   <strong>\u00d6rnek JSON Yan\u0131t\u0131 (K\u0131salt\u0131lm\u0131\u015f):<\/strong><\/p>\n<pre><code class=\"language-json\">{\n      \"results\": [\n        {\n          \"place_id\": \"ChIJN1t_tDeuEmsRUsoyG83frY4\",\n          \"name\": \"Quay\",\n          \"formatted_address\": \"Upper Level, Overseas Passenger Terminal, The Rocks NSW 2000, Australia\",\n          \"rating\": 4.6\n        },\n        \/\/ ... di\u011fer sonu\u00e7lar\n      ],\n      \"status\": \"OK\"\n    }<\/code><\/pre>\n<p><strong>Find Place (Yer Bul)<\/strong><br \/>\n*   <strong>A\u00e7\u0131klama:<\/strong> Belirli bir metin giri\u015fi (\u00f6rn. &#8220;Googleplex&#8221;) veya telefon numaras\u0131yla bir yerin temel bilgilerini (place_id dahil) bulmak i\u00e7in kullan\u0131l\u0131r. Genellikle Place Details iste\u011finden \u00f6nce bir yerin <code>place_id<\/code>&#8216;sini elde etmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong>Kullan\u0131m Senaryolar\u0131:<\/strong> \u00c7ok spesifik bir yerin bilgilerini almak.<br \/>\n*   <strong>Temel Parametreler:<\/strong><br \/>\n    *   <code>input<\/code>: Metin veya telefon numaras\u0131 (\u00f6rn. &#8220;Museum of Contemporary Art Australia&#8221;, &#8220;+61292507000&#8221;).<br \/>\n    *   <code>inputtype<\/code>: <code>textquery<\/code> veya <code>phonenumber<\/code>.<br \/>\n    *   <code>fields<\/code>: Yan\u0131tta hangi alanlar\u0131n d\u00f6nd\u00fcr\u00fclece\u011fini belirtir (\u00f6rn. <code>place_id<\/code>, <code>name<\/code>, <code>geometry<\/code>). Bu parametre maliyet optimizasyonu i\u00e7in \u00e7ok \u00f6nemlidir.<br \/>\n    *   <code>key<\/code>: API anahtar\u0131n\u0131z.<br \/>\n*   <strong>\u00d6rnek \u0130stek URL&#8217;si:<\/strong><\/p>\n<pre><code class=\"language-\">https:\/\/maps.googleapis.com\/maps\/api\/place\/findplacefromtext\/json?input=Museum%20of%20Contemporary%20Art%20Australia&inputtype=textquery&fields=place_id,name,geometry&key=YOUR_API_KEY<\/code><\/pre>\n<p>*   <strong>\u00d6rnek JSON Yan\u0131t\u0131 (K\u0131salt\u0131lm\u0131\u015f):<\/strong><\/p>\n<pre><code class=\"language-json\">{\n      \"candidates\": [\n        {\n          \"place_id\": \"ChIJ_R-b0wOuEmsRzD7M4T-rXj0\",\n          \"name\": \"Museum of Contemporary Art Australia\",\n          \"geometry\": { \"location\": { \"lat\": -33.860163, \"lng\": 151.209144 } }\n        }\n      ],\n      \"status\": \"OK\"\n    }<\/code><\/pre>\n<h4>Place Details (Yer Detaylar\u0131)<\/h4>\n<p>*   <strong>A\u00e7\u0131klama:<\/strong> Bir yerin <code>place_id<\/code>&#8216;si kullan\u0131larak o yere ait kapsaml\u0131 ve detayl\u0131 bilgileri almak i\u00e7in kullan\u0131l\u0131r. <code>place_id<\/code>, genellikle Place Search veya Find Place isteklerinden elde edilir.<br \/>\n*   <strong>Kullan\u0131m Senaryolar\u0131:<\/strong> Kullan\u0131c\u0131 bir arama sonucuna t\u0131klad\u0131\u011f\u0131nda o yerin t\u00fcm detaylar\u0131n\u0131 g\u00f6sterme.<br \/>\n*   <strong>Temel Parametreler:<\/strong><br \/>\n    *   <code>place_id<\/code>: Detaylar\u0131 istenen yerin benzersiz kimli\u011fi.<br \/>\n    *   <code>fields<\/code>: Yan\u0131tta d\u00f6nd\u00fcr\u00fclecek alanlar\u0131 virg\u00fclle ayr\u0131lm\u0131\u015f \u015fekilde belirtir (\u00f6rn. <code>address_component<\/code>, <code>formatted_address<\/code>, <code>geometry<\/code>, <code>icon<\/code>, <code>name<\/code>, <code>opening_hours<\/code>, <code>photos<\/code>, <code>place_id<\/code>, <code>plus_code<\/code>, <code>rating<\/code>, <code>reviews<\/code>, <code>types<\/code>, <code>url<\/code>, <code>utc_offset<\/code>, <code>vicinity<\/code>, <code>website<\/code>). Bu parametre, gereksiz veri \u00e7ekimini engelleyerek maliyetleri d\u00fc\u015f\u00fcrmek i\u00e7in kritik \u00f6neme sahiptir.<br \/>\n    *   <code>key<\/code>: API anahtar\u0131n\u0131z.<br \/>\n*   <strong>\u00d6rnek \u0130stek URL&#8217;si:<\/strong><\/p>\n<pre><code class=\"language-\">https:\/\/maps.googleapis.com\/maps\/api\/place\/details\/json?place_id=ChIJN1t_tDeuEmsRUsoyG83frY4&fields=name,rating,formatted_phone_number,geometry,opening_hours,website,photos,reviews&key=YOUR_API_KEY<\/code><\/pre>\n<p>*   <strong>\u00d6rnek JSON Yan\u0131t\u0131 (K\u0131salt\u0131lm\u0131\u015f):<\/strong><\/p>\n<pre><code class=\"language-json\">{\n      \"result\": {\n        \"formatted_address\": \"Bennelong Point, Sydney NSW 2000, Australia\",\n        \"name\": \"Sydney Opera House\",\n        \"rating\": 4.7,\n        \"formatted_phone_number\": \"(02) 9250 7777\",\n        \"website\": \"https:\/\/www.sydneyoperahouse.com\/\",\n        \"opening_hours\": {\n          \"open_now\": true,\n          \"weekday_text\": [\"Monday: 9 AM \u2013 5 PM\", \"Tuesday: 9 AM \u2013 5 PM\", \/<em> ... <\/em>\/ ]\n        },\n        \"photos\": [\n          {\n            \"height\": 6000,\n            \"html_attributions\": [\"<a href=\\\"https:\/\/maps.google.com\/maps\/contrib\/104977464303749764726\\\">...<\/a>\"],\n            \"photo_reference\": \"CmRaAAA...\", \/\/ Bu referans ile foto\u011fraf \u00e7ekilir\n            \"width\": 8000\n          }\n        ],\n        \"reviews\": [\n          {\n            \"author_name\": \"John Doe\",\n            \"rating\": 5,\n            \"text\": \"Amazing place, must visit!\",\n            \"time\": 1678886400\n          }\n        ]\n      },\n      \"status\": \"OK\"\n    }<\/code><\/pre>\n<h4>Place Photos (Yer Foto\u011fraflar\u0131)<\/h4>\n<p>*   <strong>A\u00e7\u0131klama:<\/strong> Bir yere ait foto\u011fraflar\u0131 \u00e7ekmek i\u00e7in kullan\u0131l\u0131r. Foto\u011fraf referanslar\u0131, Place Details isteklerinden elde edilir. Bu servis, do\u011frudan bir g\u00f6rsel URL&#8217;si d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <strong>Kullan\u0131m Senaryolar\u0131:<\/strong> Uygulama aray\u00fcz\u00fcnde bir yerin g\u00f6rsellerini g\u00f6sterme.<br \/>\n*   <strong>Temel Parametreler:<\/strong><br \/>\n    *   <code>photoreference<\/code>: Place Details yan\u0131t\u0131ndan al\u0131nan foto\u011fraf referans\u0131.<br \/>\n    *   <code>maxwidth<\/code> veya <code>maxheight<\/code>: \u0130stenen foto\u011fraf\u0131n maksimum geni\u015fli\u011fi veya y\u00fcksekli\u011fi (piksel cinsinden, maksimum 1600).<br \/>\n    *   <code>key<\/code>: API anahtar\u0131n\u0131z.<br \/>\n*   <strong>\u00d6rnek \u0130stek URL&#8217;si:<\/strong><\/p>\n<pre><code class=\"language-\">https:\/\/maps.googleapis.com\/maps\/api\/place\/photo?maxwidth=400&photoreference=CmRaAAA...&key=YOUR_API_KEY<\/code><\/pre>\n<p>    Bu URL, do\u011frudan foto\u011fraf\u0131n g\u00f6r\u00fcnt\u00fclenebilece\u011fi bir URL&#8217;ye y\u00f6nlendirme yapar.<\/p>\n<h4>Autocomplete (Otomatik Tamamlama)<\/h4>\n<p>*   <strong>A\u00e7\u0131klama:<\/strong> Kullan\u0131c\u0131 bir metin kutusuna yazarken yer isimlerini ve adreslerini otomatik olarak tamamlama \u00f6nerileri sunar. Kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirir.<br \/>\n*   <strong>Kullan\u0131m Senaryolar\u0131:<\/strong> Arama kutular\u0131, adres giri\u015f alanlar\u0131.<br \/>\n*   <strong>Temel Parametreler:<\/strong><br \/>\n    *   <code>input<\/code>: Kullan\u0131c\u0131n\u0131n yazd\u0131\u011f\u0131 metin (\u00f6rn. &#8220;Eiffel T&#8221;).<br \/>\n    *   <code>types<\/code>: (\u0130ste\u011fe ba\u011fl\u0131) \u00d6nerilerin t\u00fcr\u00fcn\u00fc k\u0131s\u0131tlar (\u00f6rn. <code>geocode<\/code> sadece adresler, <code>establishment<\/code> sadece i\u015fletmeler).<br \/>\n    *   <code>components<\/code>: (\u0130ste\u011fe ba\u011fl\u0131) \u00dclke gibi bile\u015fenlere g\u00f6re filtreleme (\u00f6rn. <code>country:tr<\/code>).<br \/>\n    *   <code>sessiontoken<\/code>: (\u00d6NEML\u0130) Her yeni otomatik tamamlama oturumu i\u00e7in benzersiz bir belirte\u00e7. Bu belirte\u00e7, tek bir otomatik tamamlama oturumu i\u00e7indeki birden fazla iste\u011fi grupland\u0131rarak maliyet optimizasyonu sa\u011flar. Bir Place Details iste\u011fi yap\u0131ld\u0131\u011f\u0131nda oturum sona erer.<br \/>\n    *   <code>key<\/code>: API anahtar\u0131n\u0131z.<br \/>\n*   <strong>\u00d6rnek \u0130stek URL&#8217;si:<\/strong><\/p>\n<pre><code class=\"language-\">https:\/\/maps.googleapis.com\/maps\/api\/place\/autocomplete\/json?input=Ankara%20Atat%C3%BCrk&types=geocode&components=country:tr&key=YOUR_API_KEY&sessiontoken=YOUR_SESSION_TOKEN<\/code><\/pre>\n<p>*   <strong>\u00d6rnek JSON Yan\u0131t\u0131 (K\u0131salt\u0131lm\u0131\u015f):<\/strong><\/p>\n<pre><code class=\"language-json\">{\n      \"predictions\": [\n        {\n          \"description\": \"Ankara Atat\u00fcrk Lisesi, Ankara, T\u00fcrkiye\",\n          \"place_id\": \"ChIJG8WnK-0syhQRGqF-rY9Z_w\",\n          \"structured_formatting\": {\n            \"main_text\": \"Ankara Atat\u00fcrk Lisesi\",\n            \"secondary_text\": \"Ankara, T\u00fcrkiye\"\n          },\n          \"terms\": [ \/<em> ... <\/em>\/ ]\n        },\n        \/\/ ... di\u011fer \u00f6neriler\n      ],\n      \"status\": \"OK\"\n    }<\/code><\/pre>\n<h4>Geocoding ve Reverse Geocoding (Co\u011frafi Kodlama ve Ters Co\u011frafi Kodlama)<\/h4>\n<p>Bu servisler do\u011frudan Places API&#8217;nin bir par\u00e7as\u0131 olmasa da (Google Maps Platform&#8217;un Geocoding API&#8217;sidir), konum tabanl\u0131 uygulamalarda Places API ile birlikte s\u0131k\u00e7a kullan\u0131l\u0131rlar.<br \/>\n*   <strong>Geocoding (Co\u011frafi Kodlama):<\/strong> Bir adresi (\u00f6rn. &#8220;1600 Amphitheatre Parkway, Mountain View, CA&#8221;) co\u011frafi koordinatlara (enlem ve boylam) d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<br \/>\n*   <strong>Reverse Geocoding (Ters Co\u011frafi Kodlama):<\/strong> Co\u011frafi koordinatlar\u0131 (enlem ve boylam) okunabilir bir adrese veya yer ad\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<br \/>\n*   <strong>Kullan\u0131m Senaryolar\u0131:<\/strong> Kullan\u0131c\u0131n\u0131n girdi\u011fi adresin haritada g\u00f6sterilmesi, harita \u00fczerindeki bir noktadan adres bilgisi alma.<\/p>\n<h3>Web Servisi \u0130stekleri ve Yan\u0131tlar\u0131<\/h3>\n<p>Google Places API, RESTful prensiplere uygun bir web servisidir. Bu, HTTP protokol\u00fc \u00fczerinden basit URL istekleri ile veri al\u0131\u015fveri\u015fi yap\u0131ld\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p><strong>REST Prensipleri:<\/strong><br \/>\n*   <strong>Kaynak Tabanl\u0131:<\/strong> Her yer (place), foto\u011fraf veya arama sonucu bir kaynakt\u0131r ve benzersiz bir URL ile tan\u0131mlan\u0131r.<br \/>\n*   <strong>Durumsuz (Stateless):<\/strong> Her istek, sunucunun \u00f6nceki istekler hakk\u0131nda bilgi tutmas\u0131n\u0131 gerektirmeyen t\u00fcm gerekli bilgileri i\u00e7erir.<br \/>\n*   <strong>\u0130stemci-Sunucu Ayr\u0131m\u0131:<\/strong> \u0130stemci (uygulaman\u0131z) ve sunucu (Google API&#8217;leri) birbirinden ba\u011f\u0131ms\u0131zd\u0131r.<\/p>\n<p><strong>HTTP Metodlar\u0131:<\/strong> Places API, \u00e7o\u011funlukla <code>GET<\/code> metodunu kullanarak veri \u00e7eker. Yani, istekler URL&#8217;nin bir par\u00e7as\u0131 olarak g\u00f6nderilen parametrelerle yap\u0131l\u0131r.<\/p>\n<p><strong>URL Yap\u0131s\u0131:<\/strong><br \/>\nTemel URL: <code>https:\/\/maps.googleapis.com\/maps\/api\/place\/<\/code><br \/>\nServis son noktas\u0131: <code>nearbysearch\/json<\/code>, <code>details\/json<\/code>, <code>photo<\/code>, <code>autocomplete\/json<\/code>, vb.<br \/>\nParametreler: <code>?key=YOUR_API_KEY&param1=value1&param2=value2<\/code><\/p>\n<p><strong>JSON Yan\u0131t Format\u0131:<\/strong><br \/>\nT\u00fcm Places API servisleri (foto\u011fraf servisi hari\u00e7, o do\u011frudan g\u00f6rsel d\u00f6ner), yan\u0131tlar\u0131n\u0131 JavaScript Object Notation (JSON) format\u0131nda d\u00f6ner. JSON, hafif, okunabilir ve bir\u00e7ok programlama dili taraf\u0131ndan kolayca ayr\u0131\u015ft\u0131r\u0131labilir bir veri de\u011fi\u015fim format\u0131d\u0131r. Yan\u0131t genellikle bir <code>status<\/code> alan\u0131 (iste\u011fin ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 g\u00f6sterir) ve <code>results<\/code> (arama servisleri i\u00e7in) veya <code>result<\/code> (detay servisleri i\u00e7in) gibi veri alanlar\u0131 i\u00e7erir.<\/p>\n<p><strong>Hata Kodlar\u0131 ve Anlamlar\u0131:<\/strong><br \/>\nAPI yan\u0131t\u0131nda veya HTTP durum kodlar\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n hata durumlar\u0131:<br \/>\n*   <strong><code>OK<\/code> (200 HTTP):<\/strong> \u0130stek ba\u015far\u0131yla tamamland\u0131.<br \/>\n*   <strong><code>ZERO_RESULTS<\/code>:<\/strong> Arama i\u00e7in hi\u00e7bir sonu\u00e7 bulunamad\u0131.<br \/>\n*   <strong><code>OVER_QUERY_LIMIT<\/code>:<\/strong> Uygulaman\u0131z kota limitini a\u015ft\u0131 veya faturaland\u0131rma etkin de\u011fil.<br \/>\n*   <strong><code>REQUEST_DENIED<\/code>:<\/strong> \u0130stek reddedildi (\u00f6rn. ge\u00e7ersiz API anahtar\u0131, API etkin de\u011fil, anahtar k\u0131s\u0131tlamalar\u0131).<br \/>\n*   <strong><code>INVALID_REQUEST<\/code>:<\/strong> \u0130stek URL&#8217;si veya parametreleri ge\u00e7ersiz.<br \/>\n*   <strong><code>NOT_FOUND<\/code>:<\/strong> \u0130stenen yer <code>place_id<\/code> ile bulunamad\u0131.<br \/>\n*   <strong><code>UNKNOWN_ERROR<\/code>:<\/strong> Sunucu taraf\u0131nda bilinmeyen bir hata olu\u015ftu.<\/p>\n<p><strong>G\u00fcvenli API Anahtar\u0131 Kullan\u0131m\u0131:<\/strong><br \/>\n*   <strong>Sunucu Taraf\u0131 (Backend):<\/strong> E\u011fer API isteklerini sunucunuzdan yap\u0131yorsan\u0131z, API anahtar\u0131n\u0131z\u0131 ortam de\u011fi\u015fkenlerinde veya g\u00fcvenli bir yap\u0131land\u0131rma dosyas\u0131nda saklay\u0131n. API anahtar\u0131n\u0131z\u0131 asla do\u011frudan kod i\u00e7ine g\u00f6mmeyin veya s\u00fcr\u00fcm kontrol sistemlerine (Git gibi) y\u00fcklemeyin. IP adresi k\u0131s\u0131tlamalar\u0131n\u0131 kullan\u0131n.<br \/>\n*   <strong>\u0130stemci Taraf\u0131 (Frontend):<\/strong> Taray\u0131c\u0131 tabanl\u0131 uygulamalarda (JavaScript ile) API anahtar\u0131n\u0131z\u0131 kullan\u0131rken, mutlaka HTTP referans k\u0131s\u0131tlamalar\u0131n\u0131 (alan ad\u0131 k\u0131s\u0131tlamas\u0131) kullan\u0131n. Bu, anahtar\u0131n\u0131z\u0131n ba\u015fka web siteleri taraf\u0131ndan k\u00f6t\u00fcye kullan\u0131lmas\u0131n\u0131 \u00f6nler. Asla genel bir API anahtar\u0131n\u0131 k\u0131s\u0131tlama olmadan taray\u0131c\u0131da kullanmay\u0131n.<\/p>\n<h3>Uygulama Geli\u015ftirme \u00d6rnekleri<\/h3>\n<p>Google Places API&#8217;yi farkl\u0131 programlama dillerinde ve ortamlar\u0131nda nas\u0131l kullanabilece\u011finize dair \u00f6rnekler.<\/p>\n<h4>Python ile Places API Kullan\u0131m\u0131<\/h4>\n<p>Python&#8217;da <code>requests<\/code> k\u00fct\u00fcphanesi ile basit bir Nearby Search \u00f6rne\u011fi.<\/p>\n<pre><code class=\"language-python\">import requests\nimport json\n\nAPI_KEY = \"YOUR_API_KEY\"\nBASE_URL = \"https:\/\/maps.googleapis.com\/maps\/api\/place\/\"\n\ndef nearby_search(location, radius, place_type, keyword=None):\n    endpoint = \"nearbysearch\/json\"\n    params = {\n        \"location\": f\"{location['lat']},{location['lng']}\",\n        \"radius\": radius,\n        \"type\": place_type,\n        \"key\": API_KEY\n    }\n    if keyword:\n        params[\"keyword\"] = keyword\n\n    response = requests.get(f\"{BASE_URL}{endpoint}\", params=params)\n    response.raise_for_status() # HTTP hatalar\u0131 i\u00e7in istisna f\u0131rlat\u0131r\n    return response.json()\n\ndef get_place_details(place_id, fields):\n    endpoint = \"details\/json\"\n    params = {\n        \"place_id\": place_id,\n        \"fields\": \",\".join(fields),\n        \"key\": API_KEY\n    }\n    response = requests.get(f\"{BASE_URL}{endpoint}\", params=params)\n    response.raise_for_status()\n    return response.json()\n\nif __name__ == \"__main__\":\n    # \u00d6rnek: \u0130stanbul, Taksim Meydan\u0131 \u00e7evresindeki restoranlar\u0131 bul\n    taksim_square = {\"lat\": 41.036109, \"lng\": 28.988241}\n    \n    print(\"Taksim \u00e7evresindeki restoranlar:\")\n    try:\n        restaurants = nearby_search(taksim_square, 1500, \"restaurant\")\n        if restaurants[\"status\"] == \"OK\" and restaurants[\"results\"]:\n            for place in restaurants[\"results\"][:5]: # \u0130lk 5'i g\u00f6ster\n                print(f\"- {place['name']} (Place ID: {place['place_id']})\")\n                \n                # \u0130lk restoran\u0131n detaylar\u0131n\u0131 \u00e7ek\n                if place == restaurants[\"results\"][0]:\n                    print(\"\\n\u0130lk restoran\u0131n detaylar\u0131:\")\n                    details_fields = [\"name\", \"formatted_address\", \"rating\", \"website\", \"formatted_phone_number\", \"opening_hours\"]\n                    place_details = get_place_details(place[\"place_id\"], details_fields)\n                    if place_details[\"status\"] == \"OK\" and place_details[\"result\"]:\n                        result = place_details[\"result\"]\n                        print(f\"  Ad\u0131: {result.get('name')}\")\n                        print(f\"  Adres: {result.get('formatted_address')}\")\n                        print(f\"  Puan: {result.get('rating')}\")\n                        print(f\"  Web Sitesi: {result.get('website')}\")\n                        print(f\"  Telefon: {result.get('formatted_phone_number')}\")\n                        if 'opening_hours' in result:\n                            print(f\"  A\u00e7\u0131k m\u0131: {result['opening_hours'].get('open_now')}\")\n                            # print(f\"  \u00c7al\u0131\u015fma Saatleri: {', '.join(result['opening_hours'].get('weekday_text', []))}\")\n                    else:\n                        print(f\"Detaylar \u00e7ekilemedi: {place_details.get('status')}\")\n        else:\n            print(f\"Restoran bulunamad\u0131 veya hata: {restaurants.get('status')}\")\n    except requests.exceptions.RequestException as e:\n        print(f\"API iste\u011fi hatas\u0131: {e}\")\n    except Exception as e:\n        print(f\"Genel hata: {e}\")<\/code><\/pre>\n<h4>JavaScript (Node.js) ile Places API Kullan\u0131m\u0131<\/h4>\n<p>Node.js ortam\u0131nda <code>node-fetch<\/code> veya <code>axios<\/code> gibi k\u00fct\u00fcphanelerle Places API \u00e7a\u011fr\u0131lar\u0131 yap\u0131labilir.<\/p>\n<pre><code class=\"language-javascript\">const fetch = require('node-fetch'); \/\/ npm install node-fetch\n\nconst API_KEY = \"YOUR_API_KEY\";\nconst BASE_URL = \"https:\/\/maps.googleapis.com\/maps\/api\/place\/\";\n\nasync function textSearch(query, location = null, radius = null) {\n    const endpoint = \"textsearch\/json\";\n    let url = <code>${BASE_URL}${endpoint}?query=${encodeURIComponent(query)}&key=${API_KEY}<\/code>;\n    \n    if (location) {\n        url += <code>&location=${location.lat},${location.lng}<\/code>;\n    }\n    if (radius) {\n        url += <code>&radius=${radius}<\/code>;\n    }\n\n    try {\n        const response = await fetch(url);\n        if (!response.ok) {\n            throw new Error(<code>HTTP error! status: ${response.status}<\/code>);\n        }\n        return await response.json();\n    } catch (error) {\n        console.error(\"API iste\u011fi hatas\u0131:\", error);\n        return null;\n    }\n}\n\nasync function getPlaceDetails(placeId, fields) {\n    const endpoint = \"details\/json\";\n    const url = <code>${BASE_URL}${endpoint}?place_id=${placeId}&fields=${fields.join(',')}&key=${API_KEY}<\/code>;\n    \n    try {\n        const response = await fetch(url);\n        if (!response.ok) {\n            throw new Error(<code>HTTP error! status: ${response.status}<\/code>);\n        }\n        return await response.json();\n    } catch (error) {\n        console.error(\"API detay iste\u011fi hatas\u0131:\", error);\n        return null;\n    }\n}\n\n(async () => {\n    \/\/ \u00d6rnek: \"\u0130zmir'deki en iyi kafeler\" i\u00e7in metin aramas\u0131\n    console.log(\"\u0130zmir'deki en iyi kafeler:\");\n    const izmirCafes = await textSearch(\"best cafes in Izmir\");\n    \n    if (izmirCafes && izmirCafes.status === \"OK\" && izmirCafes.results.length > 0) {\n        izmirCafes.results.slice(0, 3).forEach(place => { \/\/ \u0130lk 3'\u00fc g\u00f6ster\n            console.log(<code>- ${place.name} (Adres: ${place.formatted_address})<\/code>);\n        });\n\n        \/\/ \u0130lk kafen\u0131n detaylar\u0131n\u0131 \u00e7ek\n        const firstCafeId = izmirCafes.results[0].place_id;\n        console(\"\\n\u0130lk kafen\u0131n detaylar\u0131:\");\n        const detailsFields = [\"name\", \"formatted_address\", \"rating\", \"website\"];\n        const cafeDetails = await getPlaceDetails(firstCafeId, detailsFields);\n        \n        if (cafeDetails && cafeDetails.status === \"OK\" && cafeDetails.result) {\n            console(<code>  Ad\u0131: ${cafeDetails.result.name}<\/code>);\n            console(<code>  Adres: ${cafeDetails.result.formatted_address}<\/code>);\n            console(<code>  Puan: ${cafeDetails.result.rating}<\/code>);\n            console(<code>  Web Sitesi: ${cafeDetails.result.website || 'Yok'}<\/code>);\n        } else {\n            console(<code>Detaylar \u00e7ekilemedi: ${cafeDetails ? cafeDetails.status : 'Bilinmeyen hata'}<\/code>);\n        }\n\n    } else {\n        console(<code>Kafe bulunamad\u0131 veya hata: ${izmirCafes ? izmirCafes.status : 'Bilinmeyen hata'}<\/code>);\n    }\n})();<\/code><\/pre>\n<h4>Frontend (Taray\u0131c\u0131) Ortam\u0131nda Places Autocomplete<\/h4>\n<p>Taray\u0131c\u0131da otomatik tamamlama i\u00e7in Google Maps JavaScript API&#8217;nin Places k\u00fct\u00fcphanesi kullan\u0131l\u0131r. Bu, API anahtar\u0131n\u0131 g\u00fcvenli bir \u015fekilde kullanman\u0131za ve kullan\u0131c\u0131 aray\u00fcz\u00fc bile\u015fenleriyle kolayca entegre olman\u0131za olanak tan\u0131r.<\/p>\n<p>HTML:<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n<html>\n<head>\n    <title>Places Autocomplete \u00d6rne\u011fi<\/title>\n    <style>\n        #autocomplete-input {\n            width: 300px;\n            padding: 10px;\n            font-size: 16px;\n            margin-top: 20px;\n        }\n    <\/style>\n<\/head>\n<body>\n    <h2>Yer Otomatik Tamamlama<\/h2>\n    <input id=\"autocomplete-input\" type=\"text\" placeholder=\"Bir yer veya adres girin...\">\n    <p>Se\u00e7ilen Yer ID: <span id=\"place-id-output\"><\/span><\/p>\n\n    <script>\n        function initAutocomplete() {\n            const input = document.getElementById('autocomplete-input');\n            const autocomplete = new google.maps.places.Autocomplete(input, {\n                types: ['geocode', 'establishment'], \/\/ Hem adresleri hem de i\u015fletmeleri \u00f6ner\n                componentRestrictions: { country: ['tr'] } \/\/ Sadece T\u00fcrkiye'den sonu\u00e7lar\n            });\n\n            autocomplete.addListener('place_changed', () => {\n                const place = autocomplete.getPlace();\n                if (!place.geometry) {\n                    \/\/ Kullan\u0131c\u0131 Enter tu\u015funa bast\u0131 ama ge\u00e7erli bir yer se\u00e7medi.\n                    console.log(\"Ge\u00e7erli bir yer se\u00e7ilmedi.\");\n                    document.getElementById('place-id-output').textContent = \"Ge\u00e7erli yer yok.\";\n                    return;\n                }\n\n                console.log(\"Se\u00e7ilen yer:\", place);\n                document.getElementById('place-id-output').textContent = place.place_id;\n                \/\/ Burada place nesnesinden di\u011fer detaylar\u0131 al\u0131p kullanabilirsiniz\n                \/\/ \u00d6rne\u011fin: place.name, place.formatted_address, place.geometry.location.lat(), place.geometry.location.lng()\n            });\n        }\n    <\/script>\n    <!-- Google Maps JavaScript API'yi y\u00fckleyin -->\n    <!-- API anahtar\u0131n\u0131z\u0131 ve 'libraries=places' parametresini eklemeyi unutmay\u0131n -->\n    <script async defer src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=YOUR_API_KEY&#038;libraries=places&#038;callback=initAutocomplete\"><\/script>\n<\/body>\n<\/html><\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>libraries=places<\/code> parametresi Places k\u00fct\u00fcphanesini y\u00fckler ve <code>callback=initAutocomplete<\/code> fonksiyonu API y\u00fcklendi\u011finde <code>initAutocomplete<\/code> fonksiyonunu \u00e7a\u011f\u0131r\u0131r. API anahtar\u0131n\u0131z\u0131 <code>YOUR_API_KEY<\/code> yerine yazmay\u0131 ve Google Cloud Console&#8217;da bu anahtar i\u00e7in HTTP Referans k\u0131s\u0131tlamas\u0131 eklemeyi unutmay\u0131n (\u00f6rn. <code><em>.yourdomain.com\/<\/em><\/code>).<\/p>\n<h3>Maliyet Optimizasyonu ve G\u00fcvenlik<\/h3>\n<p>Google Places API, kullan\u0131m ba\u015f\u0131na \u00fccretlendirilen bir servistir. Bu nedenle, maliyetleri optimize etmek ve API anahtar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r.<\/p>\n<p><strong>1. API Anahtar\u0131 K\u0131s\u0131tlamalar\u0131:<\/strong> Daha \u00f6nce de belirtildi\u011fi gibi, API anahtar\u0131n\u0131z\u0131 kullanaca\u011f\u0131n\u0131z alan adlar\u0131 (HTTP referer), IP adresleri veya uygulama paket kimlikleri ile k\u0131s\u0131tlay\u0131n. Bu, anahtar\u0131n\u0131z\u0131n k\u00f6t\u00fc niyetli ki\u015filer taraf\u0131ndan kullan\u0131lmas\u0131n\u0131 engeller.<\/p>\n<p><strong>2. <code>fields<\/code> Parametresi ile Sadece Gerekli Veriyi \u00c7ekme:<\/strong> Place Details ve Find Place isteklerinde, <code>fields<\/code> parametresi ile yaln\u0131zca ihtiyac\u0131n\u0131z olan veri alanlar\u0131n\u0131 isteyin. Her veri alan\u0131 farkl\u0131 bir maliyete sahip olabilir. \u00d6rne\u011fin, yaln\u0131zca bir yerin ad\u0131n\u0131 ve adresini istiyorsan\u0131z, <code>name,formatted_address<\/code> isteyin, <code>reviews<\/code> veya <code>photos<\/code> gibi daha pahal\u0131 alanlar\u0131 istemeyin.<\/p>\n<p><strong>3. Session Tokens Kullan\u0131m\u0131 (Autocomplete):<\/strong> Otomatik tamamlama i\u00e7in <code>sessiontoken<\/code> kullanmak, bir dizi otomatik tamamlama iste\u011fini ve ard\u0131ndan gelen tek bir Place Details iste\u011fini tek bir oturum olarak grupland\u0131r\u0131r. Bu, maliyetleri \u00f6nemli \u00f6l\u00e7\u00fcde d\u00fc\u015f\u00fcr\u00fcr, \u00e7\u00fcnk\u00fc Google bu oturumu tek bir &#8220;Autocomplete Session&#8221; olarak faturaland\u0131r\u0131r. Her yeni arama oturumu i\u00e7in yeni bir <code>sessiontoken<\/code> olu\u015fturun ve bir yer se\u00e7ildi\u011finde veya arama tamamland\u0131\u011f\u0131nda token&#8217;\u0131 s\u0131f\u0131rlay\u0131n.<\/p>\n<p><strong>4. \u00d6nbellekleme (Caching) Stratejileri:<\/strong> S\u0131k\u00e7a istenen veya de\u011fi\u015fmeyen yer verilerini (\u00f6rn. pop\u00fcler yerlerin detaylar\u0131) uygulaman\u0131z\u0131n sunucu taraf\u0131nda veya istemci taraf\u0131nda \u00f6nbelle\u011fe al\u0131n. Bu, ayn\u0131 veri i\u00e7in tekrar tekrar API iste\u011fi yapmaktan ka\u00e7\u0131narak maliyetleri d\u00fc\u015f\u00fcr\u00fcr. Ancak, verilerin g\u00fcncel kalmas\u0131n\u0131 sa\u011flamak i\u00e7in uygun \u00f6nbellek ge\u00e7ersiz k\u0131lma mekanizmalar\u0131 uygulay\u0131n.<\/p>\n<p><strong>5. Kota Limitleri ve \u0130zleme:<\/strong> Google Cloud Console&#8217;da API kullan\u0131m\u0131n\u0131z\u0131 ve kota limitlerinizi d\u00fczenli olarak izleyin. Anormal kullan\u0131m art\u0131\u015flar\u0131n\u0131 veya <code>OVER_QUERY_LIMIT<\/code> hatalar\u0131n\u0131 erkenden tespit ederek m\u00fcdahale edebilirsiniz. Gerekirse kota limitlerinizi art\u0131rmak i\u00e7in Google&#8217;a talepte bulunabilirsiniz.<\/p>\n<p><strong>6. Client-side vs. Server-side \u0130stekler:<\/strong> Hassas veriler i\u00e7eren veya y\u00fcksek maliyetli API isteklerini sunucu taraf\u0131nda (backend) yapmak daha g\u00fcvenlidir. API anahtar\u0131n\u0131z\u0131n istemci taraf\u0131nda (taray\u0131c\u0131da) maruz kalma riskini azalt\u0131r. Ancak, Autocomplete gibi kullan\u0131c\u0131 aray\u00fcz\u00fc odakl\u0131 servisler genellikle istemci taraf\u0131nda daha iyi bir deneyim sunar.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular ve \u0130pu\u00e7lar\u0131<\/h3>\n<p><strong>&#8220;OVER_QUERY_LIMIT&#8221; hatas\u0131 nas\u0131l \u00e7\u00f6z\u00fcl\u00fcr?<\/strong><br \/>\nBu hata, genellikle a\u015fa\u011f\u0131daki nedenlerden biriyle ortaya \u00e7\u0131kar:<br \/>\n*   <strong>Kota A\u015f\u0131m\u0131:<\/strong> G\u00fcnl\u00fck veya dakikal\u0131k istek limitlerinizi a\u015fm\u0131\u015f olabilirsiniz. Google Cloud Console&#8217;dan kullan\u0131m\u0131n\u0131z\u0131 kontrol edin.<br \/>\n*   <strong>Faturaland\u0131rma Etkin De\u011fil:<\/strong> Projenize bir faturaland\u0131rma hesab\u0131 ba\u011fl\u0131 de\u011filse veya kredi kart\u0131n\u0131z\u0131n s\u00fcresi dolduysa bu hatay\u0131 alabilirsiniz.<br \/>\n*   <strong>API Anahtar\u0131 K\u0131s\u0131tlamas\u0131:<\/strong> API anahtar\u0131n\u0131z yanl\u0131\u015f k\u0131s\u0131tlanm\u0131\u015f olabilir ve iste\u011finize izin verilmiyor olabilir.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Faturaland\u0131rma hesab\u0131n\u0131z\u0131n aktif oldu\u011fundan emin olun, kota limitlerinizi kontrol edin ve gerekirse art\u0131r\u0131n, API anahtar\u0131 k\u0131s\u0131tlamalar\u0131n\u0131 do\u011fru yap\u0131land\u0131r\u0131n.<\/p>\n<p><strong>&#8220;ZERO_RESULTS&#8221; ne anlama gelir?<\/strong><br \/>\nBu durum, API iste\u011finizin ba\u015far\u0131l\u0131 oldu\u011fu ancak belirtilen kriterlere uygun hi\u00e7bir yerin bulunamad\u0131\u011f\u0131 anlam\u0131na gelir. \u00d6rne\u011fin, \u00e7ok k\u00fc\u00e7\u00fck bir yar\u0131\u00e7apla veya \u00e7ok spesifik bir anahtar kelimeyle arama yapt\u0131\u011f\u0131n\u0131zda bu yan\u0131t\u0131 alabilirsiniz.<\/p>\n<p><strong>API yan\u0131t\u0131nda T\u00fcrk\u00e7e karakter sorunlar\u0131 ya\u015fan\u0131yor mu?<\/strong><br \/>\nGoogle Places API yan\u0131tlar\u0131 genellikle UTF-8 kodlamas\u0131nda gelir ve T\u00fcrk\u00e7e karakterleri do\u011fru \u015fekilde destekler. Ancak, uygulaman\u0131z\u0131n karakter kodlama ayarlar\u0131 veya veritaban\u0131 ayarlar\u0131 yanl\u0131\u015fsa sorun ya\u015fayabilirsiniz. \u0130stek ve yan\u0131tlar\u0131 i\u015flerken UTF-8&#8217;i kulland\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<p><strong>Yerel dilde sonu\u00e7 alma m\u00fcmk\u00fcn m\u00fc?<\/strong><br \/>\nEvet, Places API isteklerine <code>language<\/code> parametresini ekleyerek sonu\u00e7lar\u0131n belirli bir dilde d\u00f6nmesini sa\u011flayabilirsiniz. \u00d6rne\u011fin, <code>language=tr<\/code> ile T\u00fcrk\u00e7e sonu\u00e7lar alabilirsiniz. Ancak, t\u00fcm yerlerin t\u00fcm dillerde \u00e7evirisi olmayabilir; bu durumda varsay\u0131lan veya \u0130ngilizce isimler d\u00f6nebilir.<\/p>\n<p><strong>Farkl\u0131 yer t\u00fcrlerini nas\u0131l filtreleyebilirim?<\/strong><br \/>\n<code>type<\/code> parametresini kullanarak belirli yer t\u00fcrlerini (\u00f6rn. <code>restaurant<\/code>, <code>cafe<\/code>, <code>hospital<\/code>, <code>atm<\/code>) filtreleyebilirsiniz. Birden fazla t\u00fcr belirtmek i\u00e7in pipe (<code>|<\/code>) karakterini kullanabilirsiniz (\u00f6rn. <code>type=restaurant|cafe<\/code>). Ancak, baz\u0131 servislerde (\u00f6rn. Autocomplete) <code>types<\/code> parametresi daha genel kategorileri (\u00f6rn. <code>geocode<\/code>, <code>establishment<\/code>) kabul eder.<\/p>\n<h3>Sonu\u00e7 ve Gelecek<\/h3>\n<p>Google Places API, konum tabanl\u0131 uygulamalar geli\u015ftiren geli\u015ftiriciler i\u00e7in paha bi\u00e7ilmez bir ara\u00e7t\u0131r. D\u00fcnya genelindeki zengin ve g\u00fcncel yer verilerine kolay eri\u015fim sa\u011flayarak, uygulamalar\u0131n kullan\u0131c\u0131 deneyimini ki\u015fiselle\u015ftirme ve zenginle\u015ftirme potansiyeli sunar. Yak\u0131n \u00e7evre aramalar\u0131ndan detayl\u0131 yer bilgilerine, otomatik tamamlama \u00f6zelliklerinden foto\u011fraf entegrasyonuna kadar geni\u015f bir yelpazede servisler sunmas\u0131, onu modern uygulama geli\u015ftirmenin ayr\u0131lmaz bir par\u00e7as\u0131 haline getirmi\u015ftir.<\/p>\n<p>Konum tabanl\u0131 servislerin ve ak\u0131ll\u0131 \u015fehir uygulamalar\u0131n\u0131n y\u00fckseli\u015fiyle birlikte, Google Places API&#8217;nin \u00f6nemi daha da artacakt\u0131r. Geli\u015ftiriciler, bu API&#8217;yi kullanarak seyahat planlama, yerel i\u015fletme ke\u015ffi, sosyal etkile\u015fim ve lojistik gibi bir\u00e7ok alanda yenilik\u00e7i \u00e7\u00f6z\u00fcmler \u00fcretmeye devam edecektir. Maliyet optimizasyonu ve g\u00fcvenlik en iyi uygulamalar\u0131n\u0131 takip ederek, Google Places API&#8217;nin sundu\u011fu t\u00fcm avantajlardan faydalan\u0131rken ayn\u0131 zamanda s\u00fcrd\u00fcr\u00fclebilir ve g\u00fcvenli uygulamalar geli\u015ftirmek m\u00fcmk\u00fcnd\u00fcr. Gelecekte, art\u0131r\u0131lm\u0131\u015f ger\u00e7eklik (AR) ve yapay zeka (AI) ile entegrasyonlar sayesinde konum verilerinin kullan\u0131m alanlar\u0131 daha da geni\u015fleyecektir, bu da Places API gibi servislerin de\u011ferini katlayacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 servisler, mobil uyg","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-31478","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi\" \/>\n<meta property=\"og:description\" content=\"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 servisler, mobil uyg\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-10T07:41:23+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi\",\"datePublished\":\"2025-10-10T07:41:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/\"},\"wordCount\":3374,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/\",\"name\":\"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-10T07:41:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi","og_description":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda konum tabanl\u0131 servisler, mobil uyg","og_url":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-10T07:41:23+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi","datePublished":"2025-10-10T07:41:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/"},"wordCount":3374,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/","name":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-10T07:41:23+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/google-places-api-web-servisi-ornekleri-ve-kapsamli-kullanim-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Google Places API Web Servisi \u00d6rnekleri ve Kapsaml\u0131 Kullan\u0131m Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31478"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31478\/revisions"}],"predecessor-version":[{"id":31479,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31478\/revisions\/31479"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}