{"id":41150,"date":"2026-03-03T21:40:45","date_gmt":"2026-03-03T18:40:45","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=41150"},"modified":"2026-03-03T21:40:45","modified_gmt":"2026-03-03T18:40:45","slug":"android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/","title":{"rendered":"Android Google Haritalar&#8217;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Android Google Haritalar&#8217;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber<\/h2>\n<p>Android platformunda co\u011frafi konum tabanl\u0131 uygulamalar geli\u015ftirirken, kullan\u0131c\u0131lar\u0131n iki nokta aras\u0131nda bir rota \u00e7izebilmesi temel ve s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir gereksinimdir. Navigasyon uygulamalar\u0131ndan lojistik \u00e7\u00f6z\u00fcmlerine, seyahat planlama ara\u00e7lar\u0131ndan konum tabanl\u0131 sosyal a\u011flara kadar pek \u00e7ok alanda rota \u00e7izimi, kullan\u0131c\u0131 deneyimini zenginle\u015ftiren kritik bir \u00f6zelliktir. Google Haritalar SDK&#8217;s\u0131, Android geli\u015ftiricilerine bu t\u00fcr i\u015flevselli\u011fi uygulamalar\u0131na entegre etme konusunda g\u00fc\u00e7l\u00fc ve esnek bir yap\u0131 sunar. Bu detayl\u0131 teknik makale, Android Google Haritalar \u00fczerinde iki nokta aras\u0131nda nas\u0131l rota \u00e7izilece\u011fini, gerekli bile\u015fenleri, API entegrasyonlar\u0131n\u0131 ve ad\u0131m ad\u0131m uygulama s\u00fcre\u00e7lerini kapsaml\u0131 bir \u015fekilde ele alacakt\u0131r.<\/p>\n<h2>Giri\u015f ve Temel Bile\u015fenlere Genel Bak\u0131\u015f<\/h2>\n<p>Google Haritalar SDK&#8217;s\u0131, Android uygulamalar\u0131na etkile\u015fimli haritalar eklemek i\u00e7in zengin bir API seti sa\u011flar. Ancak, sadece harita g\u00f6stermek yeterli de\u011fildir; kullan\u0131c\u0131lar\u0131n belirli bir hedefe ula\u015fmak i\u00e7in izlemesi gereken yolu g\u00f6rselle\u015ftirmek, uygulaman\u0131z\u0131n de\u011ferini art\u0131r\u0131r. Rota \u00e7izimi i\u015flemi genellikle iki ana bile\u015fenin birle\u015fiminden olu\u015fur: Google Haritalar SDK&#8217;s\u0131 (haritay\u0131 g\u00f6stermek ve rotay\u0131 \u00e7izmek i\u00e7in) ve Google Directions API (ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131 aras\u0131nda rota verilerini almak i\u00e7in). Bu iki bile\u015feni do\u011fru bir \u015fekilde entegre etmek, ba\u015far\u0131l\u0131 bir rota \u00e7izim uygulamas\u0131n\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>Google Haritalar SDK for Android&#8217;e Genel Bak\u0131\u015f<\/h3>\n<p>Google Haritalar SDK&#8217;s\u0131, Android uygulamalar\u0131n\u0131za tamamen \u00f6zelle\u015ftirilebilir haritalar eklemenizi sa\u011flar. Marker&#8217;lar, poligonlar, daireler ve \u00e7izgiler (polyline&#8217;lar) gibi \u00e7e\u015fitli harita nesneleri eklemenize olanak tan\u0131r. Rota \u00e7izimi i\u00e7in, Directions API&#8217;den al\u0131nan rota verilerini bir <code>Polyline<\/code> nesnesi olarak haritaya ekleyece\u011fiz.<\/p>\n<p>SDK&#8217;y\u0131 kullanmaya ba\u015flamak i\u00e7in \u00f6ncelikle bir Google Cloud projesi olu\u015fturman\u0131z ve Haritalar SDK&#8217;s\u0131n\u0131 etkinle\u015ftirmeniz gerekir. Ayr\u0131ca, uygulamalar\u0131n\u0131z\u0131n API&#8217;ye g\u00fcvenli bir \u015fekilde eri\u015febilmesi i\u00e7in bir API anahtar\u0131 (<code>API Key<\/code>) alman\u0131z ve bunu uygulaman\u0131z\u0131n <code>AndroidManifest.xml<\/code> dosyas\u0131na eklemeniz gerekmektedir.<\/p>\n<h3>Gerekli \u0130zinler ve Ba\u011f\u0131ml\u0131l\u0131klar<\/h3>\n<p>Uygulaman\u0131z\u0131n harita ve konum servislerini kullanabilmesi i\u00e7in belirli izinlere ve ba\u011f\u0131ml\u0131l\u0131klara ihtiyac\u0131 vard\u0131r:<\/p>\n<p>*   <strong>\u0130nternet Eri\u015fimi<\/strong>: Directions API&#8217;ye istek g\u00f6ndermek ve harita d\u00f6\u015femelerini indirmek i\u00e7in <code>android.permission.INTERNET<\/code> izni gereklidir.<br \/>\n*   <strong>Konum \u0130zinleri<\/strong>: Kullan\u0131c\u0131n\u0131n mevcut konumunu haritada g\u00f6stermek isterseniz, <code>android.permission.ACCESS_FINE_LOCATION<\/code> ve\/veya <code>android.permission.ACCESS_COARSE_LOCATION<\/code> izinlerini talep etmeniz gerekir. Android 6.0 (API 23) ve \u00fczeri s\u00fcr\u00fcmlerde bu izinlerin \u00e7al\u0131\u015fma zaman\u0131nda (<code>runtime<\/code>) kullan\u0131c\u0131dan talep edilmesi gerekti\u011fini unutmay\u0131n.<br \/>\n*   <strong>Google Play Services<\/strong>: Google Haritalar SDK&#8217;s\u0131, Google Play Services&#8217;a ba\u011f\u0131ml\u0131d\u0131r. <code>build.gradle<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 eklemeniz gerekir:<\/p>\n<pre><code class=\"language-gradle\">implementation 'com.google.android.gms:play-services-maps:18.x.x'<\/code><\/pre>\n<p>*   <strong>Google Maps Utility Library (Opsiyonel ama \u00d6nerilir)<\/strong>: Directions API&#8217;den al\u0131nan poliline kodunu \u00e7\u00f6zmek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-gradle\">implementation 'com.google.maps.android:android-maps-utils:2.x.x'<\/code><\/pre>\n<h2>Harita Nesnesini Uygulamaya Entegre Etme<\/h2>\n<p>Haritay\u0131 uygulaman\u0131za entegre etmek i\u00e7in iki ana y\u00f6ntem vard\u0131r: <code>SupportMapFragment<\/code> veya <code>MapView<\/code>. Genellikle <code>SupportMapFragment<\/code> tercih edilir \u00e7\u00fcnk\u00fc ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini otomatik olarak halleder.<\/p>\n<h3><code>SupportMapFragment<\/code> veya <code>MapView<\/code> Kullan\u0131m\u0131<\/h3>\n<p>*   <strong><code>SupportMapFragment<\/code><\/strong>: Bir <code>Fragment<\/code> olarak haritay\u0131 uygulaman\u0131z\u0131n bir b\u00f6l\u00fcm\u00fcne kolayca yerle\u015ftirmenizi sa\u011flar. Aktivite ya\u015fam d\u00f6ng\u00fcs\u00fc olaylar\u0131n\u0131 otomatik olarak y\u00f6netir. XML layout dosyan\u0131zda a\u015fa\u011f\u0131daki gibi tan\u0131mlan\u0131r:<\/p>\n<pre><code class=\"language-xml\"><fragment\n        android:id=\"@+id\/map\"\n        android:name=\"com.google.android.gms.maps.SupportMapFragment\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\" \/><\/code><\/pre>\n<p>    Daha sonra aktivitenizde\/fragment&#8217;\u0131n\u0131zda bu fragman\u0131 al\u0131p <code>getMapAsync()<\/code> metodunu \u00e7a\u011f\u0131rarak harita haz\u0131r oldu\u011funda bir geri \u00e7a\u011f\u0131r\u0131m (<code>callback<\/code>) al\u0131rs\u0131n\u0131z.<br \/>\n*   <strong><code>MapView<\/code><\/strong>: Bir <code>View<\/code> olarak haritay\u0131 do\u011frudan bir layout&#8217;a yerle\u015ftirmenizi sa\u011flar. Ancak, <code>MapView<\/code>&#8216;in ya\u015fam d\u00f6ng\u00fcs\u00fc olaylar\u0131n\u0131 (<code>onCreate<\/code>, <code>onStart<\/code>, <code>onResume<\/code>, <code>onPause<\/code>, <code>onStop<\/code>, <code>onDestroy<\/code>, <code>onSaveInstanceState<\/code>) manuel olarak y\u00f6netmeniz gerekir. Daha fazla kontrol gerektiren \u00f6zel durumlar i\u00e7in uygundur.<\/p>\n<p>Her iki durumda da, harita haz\u0131r oldu\u011funda <code>OnMapReadyCallback<\/code> aray\u00fcz\u00fc \u00fczerinden <code>onMapReady(GoogleMap googleMap)<\/code> metodu \u00e7a\u011fr\u0131l\u0131r. Bu metot i\u00e7inde <code>GoogleMap<\/code> nesnesine eri\u015febilir ve harita \u00fczerinde i\u015flemler yapmaya ba\u015flayabilirsiniz.<\/p>\n<h3>Harita Ayarlar\u0131 ve Temel \u0130\u015flemler<\/h3>\n<p><code>onMapReady<\/code> metodu i\u00e7inde <code>GoogleMap<\/code> nesnesini ald\u0131ktan sonra, haritan\u0131n g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc ve davran\u0131\u015f\u0131n\u0131 \u00f6zelle\u015ftirebilirsiniz:<\/p>\n<p>*   <strong>Kamera Kontrol\u00fc<\/strong>: <code>googleMap.moveCamera()<\/code> veya <code>googleMap.animateCamera()<\/code> metodlar\u0131yla haritan\u0131n g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc belirli bir <code>LatLng<\/code> noktas\u0131na veya <code>LatLngBounds<\/code> alan\u0131na ta\u015f\u0131yabilirsiniz. <code>CameraUpdateFactory<\/code> s\u0131n\u0131f\u0131, kamera g\u00fcncellemeleri olu\u015fturmak i\u00e7in yard\u0131mc\u0131 metodlar sunar.<br \/>\n*   <strong>Marker Ekleme<\/strong>: Belirli konumlar\u0131 i\u015faretlemek i\u00e7in <code>MarkerOptions<\/code> nesnesi kullanarak <code>googleMap.addMarker()<\/code> metodunu \u00e7a\u011f\u0131rabilirsiniz. Marker&#8217;lar, rota ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131n\u0131 g\u00f6rselle\u015ftirmek i\u00e7in \u00f6nemlidir.<br \/>\n*   <strong>UI Ayarlar\u0131<\/strong>: Yak\u0131nla\u015ft\u0131rma kontrolleri, konum butonu, harita t\u00fcr\u00fc (uydu, arazi vb.) gibi UI bile\u015fenlerini etkinle\u015ftirebilir veya devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz.<\/p>\n<h2>Rota \u00c7izimi \u0130\u00e7in Gerekli Veri Kaynaklar\u0131: Google Directions API<\/h2>\n<p>Do\u011frudan Google Haritalar SDK&#8217;s\u0131 ile rota \u00e7izmek m\u00fcmk\u00fcn de\u011fildir; sadece geometrik \u015fekiller (polyline&#8217;lar) \u00e7izebilirsiniz. As\u0131l rota verisini elde etmek i\u00e7in Google Directions API&#8217;yi kullanman\u0131z gerekir.<\/p>\n<h3>Google Directions API&#8217;ye Giri\u015f<\/h3>\n<p>Google Directions API, belirli bir ba\u015flang\u0131\u00e7 noktas\u0131 ile bir veya daha fazla hedef nokta aras\u0131nda yol tarifi bilgileri sa\u011flayan bir web servisidir. Bu API&#8217;yi kullanarak s\u00fcr\u00fc\u015f, y\u00fcr\u00fcme, bisiklet veya toplu ta\u015f\u0131ma gibi farkl\u0131 ula\u015f\u0131m modlar\u0131 i\u00e7in rota detaylar\u0131n\u0131 alabilirsiniz. API, iste\u011fe ba\u011fl\u0131 ara noktalar\u0131, alternatif rotalar\u0131 ve trafik bilgilerini de destekler.<\/p>\n<p>API&#8217;yi kullanabilmek i\u00e7in yine bir Google Cloud projesi ve etkinle\u015ftirilmi\u015f &#8220;Directions API&#8221; hizmetine sahip olman\u0131z gerekmektedir. Kullan\u0131m limitleri ve \u00fccretlendirme politikalar\u0131n\u0131 Google Cloud dok\u00fcmantasyonundan incelemeniz \u00f6nemlidir.<\/p>\n<h3>API \u0130ste\u011fi Yap\u0131s\u0131<\/h3>\n<p>Directions API&#8217;ye yap\u0131lan istekler genellikle bir HTTP GET iste\u011fi \u015feklinde olur ve a\u015fa\u011f\u0131daki temel parametreleri i\u00e7erir:<\/p>\n<p>*   <strong><code>origin<\/code><\/strong>: Ba\u015flang\u0131\u00e7 noktas\u0131n\u0131n enlem ve boylam\u0131 (\u00f6rn: <code>40.712776,-74.005974<\/code>).<br \/>\n*   <strong><code>destination<\/code><\/strong>: Biti\u015f noktas\u0131n\u0131n enlem ve boylam\u0131.<br \/>\n*   <strong><code>mode<\/code><\/strong>: Ula\u015f\u0131m modu (\u00f6rn: <code>driving<\/code>, <code>walking<\/code>, <code>bicycling<\/code>, <code>transit<\/code>).<br \/>\n*   <strong><code>key<\/code><\/strong>: API anahtar\u0131n\u0131z.<br \/>\n*   <strong><code>waypoints<\/code> (Opsiyonel)<\/strong>: Ara noktalar. Birden fazla ara nokta virg\u00fclle ayr\u0131labilir. <code>optimize:true<\/code> parametresi ile en uygun s\u0131ra bulunabilir.<br \/>\n*   <strong><code>alternatives<\/code> (Opsiyonel)<\/strong>: <code>true<\/code> olarak ayarland\u0131\u011f\u0131nda, API birden fazla alternatif rota d\u00f6nd\u00fcrebilir.<\/p>\n<p>\u00d6rnek bir API iste\u011fi URL&#8217;si \u015fu \u015fekilde olabilir:<br \/>\n<code>https:\/\/maps.googleapis.com\/maps\/api\/directions\/json?origin=40.712776,-74.005974&destination=40.758000,-73.985500&mode=driving&key=YOUR_API_KEY<\/code><\/p>\n<h3>API Yan\u0131t\u0131n\u0131n Ayr\u0131\u015ft\u0131r\u0131lmas\u0131<\/h3>\n<p>Directions API, yan\u0131t\u0131 genellikle JSON format\u0131nda d\u00f6nd\u00fcr\u00fcr. Bu JSON yan\u0131t\u0131, rota bilgilerini i\u00e7eren karma\u015f\u0131k bir yap\u0131ya sahiptir:<\/p>\n<p>*   <strong><code>routes<\/code><\/strong>: Bulunan rotalar\u0131 i\u00e7eren bir dizi. Genellikle en uygun rota ilk eleman olarak gelir.<br \/>\n*   <strong><code>legs<\/code><\/strong>: Her rota, bir veya daha fazla &#8220;leg&#8221; (bacak) i\u00e7erir. Her leg, bir ba\u015flang\u0131\u00e7 ve biti\u015f noktas\u0131 aras\u0131ndaki bir b\u00f6l\u00fcm\u00fc temsil eder.<br \/>\n*   <strong><code>steps<\/code><\/strong>: Her leg, yol tarifinin ayr\u0131nt\u0131l\u0131 ad\u0131mlar\u0131n\u0131 i\u00e7eren &#8220;step&#8221; (ad\u0131m) dizisini bar\u0131nd\u0131r\u0131r.<br \/>\n*   <strong><code>polyline<\/code><\/strong>: En kritik bilgi budur. Her <code>route<\/code> nesnesinin i\u00e7inde, rotan\u0131n t\u00fcm geometrisini s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f bir dize olarak i\u00e7eren bir <code>overview_polyline<\/code> nesnesi bulunur. Bu nesnenin <code>points<\/code> alan\u0131, rotay\u0131 haritada \u00e7izmek i\u00e7in kullanaca\u011f\u0131m\u0131z kodlanm\u0131\u015f poliline dizesini i\u00e7erir.<\/p>\n<p>Bu kodlanm\u0131\u015f poliline dizesi, Google&#8217;\u0131n kendi algoritmas\u0131yla s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f bir dizi <code>LatLng<\/code> noktas\u0131d\u0131r. Bu dizeyi tekrar <code>LatLng<\/code> nesnelerinin bir listesine d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in <code>PolyUtil.decode()<\/code> metodunu (Google Maps Utility Library&#8217;den) kullanmam\u0131z gerekecektir.<\/p>\n<h2>Rota \u00c7iziminin Ad\u0131m Ad\u0131m Uygulanmas\u0131<\/h2>\n<p>\u015eimdi, yukar\u0131da bahsedilen bile\u015fenleri bir araya getirerek iki nokta aras\u0131nda rota \u00e7izimi i\u015flemini ad\u0131m ad\u0131m inceleyelim.<\/p>\n<h3>Ad\u0131m 1: Kullan\u0131c\u0131dan Ba\u015flang\u0131\u00e7 ve Biti\u015f Noktalar\u0131n\u0131 Alma<\/h3>\n<p>Kullan\u0131c\u0131dan ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131n\u0131 alman\u0131n birka\u00e7 yolu vard\u0131r:<\/p>\n<p>*   <strong>Metin Giri\u015fi (EditText)<\/strong>: Kullan\u0131c\u0131dan adres veya koordinat girmesini isteyebilirsiniz. Bu durumda, girilen adresleri koordinatlara \u00e7evirmek i\u00e7in Google Geocoding API&#8217;yi kullanman\u0131z gerekebilir.<br \/>\n*   <strong>Haritada T\u0131klama<\/strong>: Kullan\u0131c\u0131n\u0131n haritada bir noktaya t\u0131klamas\u0131n\u0131 sa\u011flayarak <code>GoogleMap.setOnMapClickListener()<\/code> ile <code>LatLng<\/code> koordinatlar\u0131n\u0131 alabilirsiniz.<br \/>\n*   <strong>Mevcut Konum<\/strong>: Kullan\u0131c\u0131n\u0131n mevcut konumunu ba\u015flang\u0131\u00e7 noktas\u0131 olarak ayarlayabilirsiniz. Bunun i\u00e7in <code>FusedLocationProviderClient<\/code> gibi konum servislerini kullanman\u0131z gerekir.<\/p>\n<p>Bu makalede, <code>LatLng<\/code> objelerine sahip oldu\u011fumuzu varsayarak ilerleyece\u011fiz.<\/p>\n<h3>Ad\u0131m 2: Directions API \u0130ste\u011fi Olu\u015fturma<\/h3>\n<p>Directions API&#8217;ye bir HTTP iste\u011fi g\u00f6ndermeniz gerekir. Bu i\u015flemi arka planda bir i\u015f par\u00e7ac\u0131\u011f\u0131nda yapmal\u0131s\u0131n\u0131z, \u00e7\u00fcnk\u00fc a\u011f i\u015flemleri UI i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131 bloke edebilir ve ANR (Application Not Responding) hatalar\u0131na yol a\u00e7abilir.<\/p>\n<p>*   <strong>Kullan\u0131labilecek K\u00fct\u00fcphaneler<\/strong>:<br \/>\n    *   <code>HttpURLConnection<\/code>: Android&#8217;in yerle\u015fik HTTP istemcisi.<br \/>\n    *   <code>OkHttp<\/code>: Modern ve verimli bir HTTP istemcisi.<br \/>\n    *   <code>Retrofit<\/code>: REST API&#8217;leriyle \u00e7al\u0131\u015fmak i\u00e7in tip g\u00fcvenli bir HTTP istemcisi. \u00d6zellikle karma\u015f\u0131k API&#8217;ler i\u00e7in \u00f6nerilir.<br \/>\n*   <strong>Arka Plan \u0130\u015flemleri<\/strong>:<br \/>\n    *   <code>AsyncTask<\/code> (eski): Basit i\u015flemler i\u00e7in hala kullan\u0131labilir.<br \/>\n    *   <code>Kotlin Coroutines<\/code>: Kotlin projeleri i\u00e7in modern ve \u00f6nerilen e\u015fzamans\u0131z programlama yakla\u015f\u0131m\u0131.<br \/>\n    *   <code>RxJava<\/code>: G\u00fc\u00e7l\u00fc reaktif programlama k\u00fct\u00fcphanesi.<\/p>\n<p>\u00d6rnek olarak, bir URL olu\u015fturup bu URL&#8217;ye istek g\u00f6nderen ve yan\u0131t\u0131 okuyan bir metot d\u00fc\u015f\u00fcnebiliriz:<\/p>\n<pre><code class=\"language-java\">\/\/ \u00d6rnek bir URL olu\u015fturma\nString url = \"https:\/\/maps.googleapis.com\/maps\/api\/directions\/json?\" +\n             \"origin=\" + startLatLng.latitude + \",\" + startLatLng.longitude +\n             \"&destination=\" + endLatLng.latitude + \",\" + endLatLng.longitude +\n             \"&mode=driving\" +\n             \"&key=YOUR_API_KEY\";\n\n\/\/ Bu URL'ye arka planda bir HTTP iste\u011fi g\u00f6nderin ve JSON yan\u0131t\u0131n\u0131 al\u0131n.\n\/\/ Yan\u0131t\u0131 bir String olarak d\u00f6nd\u00fcr\u00fcn.<\/code><\/pre>\n<h3>Ad\u0131m 3: API Yan\u0131t\u0131n\u0131 \u0130\u015fleme ve Poliline Verisini \u00c7\u0131karma<\/h3>\n<p>API&#8217;den gelen JSON yan\u0131t\u0131n\u0131 ayr\u0131\u015ft\u0131rman\u0131z gerekir. Bu i\u015flem i\u00e7in Android&#8217;de yerle\u015fik <code>JSONObject<\/code> ve <code>JSONArray<\/code> s\u0131n\u0131flar\u0131n\u0131 kullanabilir veya <code>Gson<\/code> gibi k\u00fct\u00fcphanelerden faydalanabilirsiniz.<\/p>\n<p>1.  JSON yan\u0131t\u0131n\u0131 <code>JSONObject<\/code>&#8216;e d\u00f6n\u00fc\u015ft\u00fcr\u00fcn.<br \/>\n2.  <code>\"routes\"<\/code> dizisini al\u0131n.<br \/>\n3.  Genellikle ilk rotay\u0131 (en uygun olan\u0131) se\u00e7in.<br \/>\n4.  Bu rotan\u0131n i\u00e7indeki <code>\"overview_polyline\"<\/code> nesnesini ve onun <code>\"points\"<\/code> alan\u0131n\u0131 al\u0131n. Bu alan, kodlanm\u0131\u015f poliline dizesidir.<br \/>\n5.  Bu dizeyi <code>PolyUtil.decode(encodedPolylineString)<\/code> metodu ile <code>LatLng<\/code> nesnelerinin bir listesine d\u00f6n\u00fc\u015ft\u00fcr\u00fcn. Bu metod, Google Maps Utility Library&#8217;den gelir.<\/p>\n<pre><code class=\"language-java\">\/\/ \u00d6rnek JSON ayr\u0131\u015ft\u0131rma mant\u0131\u011f\u0131\nJSONObject jsonResponse = new JSONObject(jsonString);\nJSONArray routes = jsonResponse.getJSONArray(\"routes\");\nif (routes.length() > 0) {\n    JSONObject route = routes.getJSONObject(0);\n    JSONObject overviewPolyline = route.getJSONObject(\"overview_polyline\");\n    String encodedPolyline = overviewPolyline.getString(\"points\");\n\n    \/\/ Poliline dizesini LatLng listesine d\u00f6n\u00fc\u015ft\u00fcr\n    List<LatLng> decodedPath = PolyUtil.decode(encodedPolyline);\n    \/\/ \u015eimdi bu decodedPath listesini kullanarak haritada rota \u00e7izebiliriz.\n}<\/code><\/pre>\n<h3>Ad\u0131m 4: Haritaya Poliline \u00c7izme<\/h3>\n<p><code>LatLng<\/code> listesini ald\u0131ktan sonra, bu listeyi kullanarak haritada bir poliline \u00e7izebilirsiniz.<\/p>\n<p>1.  Bir <code>PolylineOptions<\/code> nesnesi olu\u015fturun.<br \/>\n2.  <code>add()<\/code> metodunu kullanarak <code>decodedPath<\/code> listesindeki t\u00fcm <code>LatLng<\/code> noktalar\u0131n\u0131 ekleyin.<br \/>\n3.  Polilinenin rengini (<code>color<\/code>), geni\u015fli\u011fini (<code>width<\/code>), \u015feffafl\u0131\u011f\u0131n\u0131 (<code>alpha<\/code>), ba\u015flang\u0131\u00e7 ve biti\u015f kapaklar\u0131n\u0131 (<code>startCap<\/code>, <code>endCap<\/code>) ve birle\u015fim stilini (<code>jointType<\/code>) ayarlayabilirsiniz.<br \/>\n4.  <code>googleMap.addPolyline(polylineOptions)<\/code> metodunu \u00e7a\u011f\u0131rarak polilineyi haritaya ekleyin.<\/p>\n<pre><code class=\"language-java\">PolylineOptions polylineOptions = new PolylineOptions()\n    .addAll(decodedPath)\n    .width(10) \/\/ Piksel cinsinden geni\u015flik\n    .color(Color.BLUE) \/\/ Rota rengi\n    .geodesic(true); \/\/ Ger\u00e7ek d\u00fcnya e\u011frili\u011fini hesaba katma\n\ngoogleMap.addPolyline(polylineOptions);<\/code><\/pre>\n<h3>Ad\u0131m 5: Ba\u015flang\u0131\u00e7 ve Biti\u015f Noktalar\u0131na Marker Ekleme<\/h3>\n<p>Rotan\u0131n ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131n\u0131 g\u00f6rselle\u015ftirmek i\u00e7in haritaya marker&#8217;lar eklemek iyi bir uygulamad\u0131r.<\/p>\n<p>1.  Ba\u015flang\u0131\u00e7 noktas\u0131 i\u00e7in bir <code>MarkerOptions<\/code> nesnesi olu\u015fturun, konumunu (<code>position<\/code>), ba\u015fl\u0131\u011f\u0131n\u0131 (<code>title<\/code>) ve ikonunu (<code>icon<\/code>) ayarlay\u0131n.<br \/>\n2.  Biti\u015f noktas\u0131 i\u00e7in de benzer bir <code>MarkerOptions<\/code> nesnesi olu\u015fturun.<br \/>\n3.  <code>googleMap.addMarker()<\/code> metodunu \u00e7a\u011f\u0131rarak her iki marker&#8217;\u0131 da haritaya ekleyin.<\/p>\n<pre><code class=\"language-java\">googleMap.addMarker(new MarkerOptions()\n    .position(startLatLng)\n    .title(\"Ba\u015flang\u0131\u00e7 Noktas\u0131\")\n    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));\n\ngoogleMap.addMarker(new MarkerOptions()\n    .position(endLatLng)\n    .title(\"Biti\u015f Noktas\u0131\")\n    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));<\/code><\/pre>\n<h3>Ad\u0131m 6: Harita Kameras\u0131n\u0131 Rotaya Odaklama<\/h3>\n<p>Rota \u00e7izildikten sonra, harita kameras\u0131n\u0131 t\u00fcm rotay\u0131 g\u00f6sterecek \u015fekilde ayarlamak kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirir.<\/p>\n<p>1.  Bir <code>LatLngBounds.Builder<\/code> nesnesi olu\u015fturun.<br \/>\n2.  <code>include()<\/code> metodunu kullanarak ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131n\u0131n <code>LatLng<\/code>&#8216;lerini (veya rotadaki t\u00fcm noktalar\u0131) bu s\u0131n\u0131rlara dahil edin.<br \/>\n3.  <code>build()<\/code> metodunu \u00e7a\u011f\u0131rarak <code>LatLngBounds<\/code> nesnesini olu\u015fturun.<br \/>\n4.  <code>CameraUpdateFactory.newLatLngBounds(bounds, padding)<\/code> metodunu kullanarak bir <code>CameraUpdate<\/code> olu\u015fturun. <code>padding<\/code> parametresi, rotan\u0131n haritan\u0131n kenarlar\u0131na \u00e7ok yak\u0131n olmamas\u0131n\u0131 sa\u011flar.<br \/>\n5.  <code>googleMap.animateCamera(cameraUpdate)<\/code> metodunu \u00e7a\u011f\u0131rarak kameray\u0131 rotaya odaklay\u0131n.<\/p>\n<pre><code class=\"language-java\">LatLngBounds.Builder builder = new LatLngBounds.Builder();\nbuilder.include(startLatLng);\nbuilder.include(endLatLng);\n\/\/ \u0130ste\u011fe ba\u011fl\u0131 olarak, decodedPath'deki t\u00fcm noktalar\u0131 da dahil edebilirsiniz:\n\/\/ for (LatLng point : decodedPath) {\n\/\/     builder.include(point);\n\/\/ }\nLatLngBounds bounds = builder.build();\n\nint padding = 100; \/\/ Kenarlardan 100 piksel bo\u015fluk\nCameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);\ngoogleMap.animateCamera(cu);<\/code><\/pre>\n<h2>Geli\u015fmi\u015f \u00d6zellikler ve Optimizasyonlar<\/h2>\n<p>Rota \u00e7izimi i\u015flevselli\u011fini daha da geli\u015ftirmek ve uygulaman\u0131z\u0131 optimize etmek i\u00e7in baz\u0131 ileri d\u00fczey konular\u0131 ele alal\u0131m.<\/p>\n<h3>Birden Fazla Rota ve Alternatifler<\/h3>\n<p>Directions API&#8217;ye yap\u0131lan istekte <code>alternatives=true<\/code> parametresini eklerseniz, API birden fazla olas\u0131 rota d\u00f6nd\u00fcrebilir. Bu durumda, JSON yan\u0131t\u0131ndaki <code>routes<\/code> dizisi birden fazla eleman i\u00e7erecektir. Her bir rotay\u0131 ayr\u0131 ayr\u0131 ayr\u0131\u015ft\u0131r\u0131p haritada farkl\u0131 renklerde veya stillerde poliline&#8217;lar olarak \u00e7izebilir ve kullan\u0131c\u0131ya se\u00e7im yapma imkan\u0131 sunabilirsiniz.<\/p>\n<h3>Ara Noktalar (Waypoints) Kullan\u0131m\u0131<\/h3>\n<p>Bazen kullan\u0131c\u0131lar ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131 aras\u0131nda belirli duraklardan ge\u00e7mek isteyebilir. <code>waypoints<\/code> parametresi ile Directions API&#8217;ye ara noktalar ekleyebilirsiniz. Bu ara noktalar virg\u00fclle ayr\u0131lm\u0131\u015f <code>LatLng<\/code> koordinatlar\u0131 veya adresler olabilir. Ayr\u0131ca, <code>waypoints=optimize:true|...<\/code> parametresini kullanarak API&#8217;nin ara noktalar aras\u0131ndaki en optimize edilmi\u015f s\u0131ray\u0131 bulmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h3>Rota Modlar\u0131 (Driving, Walking, Bicycling, Transit)<\/h3>\n<p><code>mode<\/code> parametresini de\u011fi\u015ftirerek farkl\u0131 ula\u015f\u0131m t\u00fcrleri i\u00e7in rota alabilirsiniz:<\/p>\n<p>*   <code>driving<\/code> (varsay\u0131lan): Araba ile s\u00fcr\u00fc\u015f.<br \/>\n*   <code>walking<\/code>: Y\u00fcr\u00fcme.<br \/>\n*   <code>bicycling<\/code>: Bisiklet.<br \/>\n*   <code>transit<\/code>: Toplu ta\u015f\u0131ma (genellikle <code>departure_time<\/code> veya <code>arrival_time<\/code> gibi ek parametreler gerektirir).<\/p>\n<p>Uygulaman\u0131zda bir se\u00e7im aray\u00fcz\u00fc sunarak kullan\u0131c\u0131n\u0131n istedi\u011fi ula\u015f\u0131m modunu se\u00e7mesine izin verebilirsiniz.<\/p>\n<h3>Hata Y\u00f6netimi ve Kullan\u0131c\u0131 Geri Bildirimi<\/h3>\n<p>API istekleri ba\u015far\u0131s\u0131z olabilir veya ge\u00e7erli bir rota bulunamayabilir. Bu durumlar\u0131 ele almak \u00f6nemlidir:<\/p>\n<p>*   <strong>A\u011f Hatalar\u0131<\/strong>: \u0130nternet ba\u011flant\u0131s\u0131 yoksa kullan\u0131c\u0131ya bilgi verin.<br \/>\n*   <strong>API Yan\u0131t Hatalar\u0131<\/strong>: Directions API, <code>status<\/code> alan\u0131nda <code>ZERO_RESULTS<\/code>, <code>NOT_FOUND<\/code>, <code>OVER_QUERY_LIMIT<\/code> gibi durum kodlar\u0131 d\u00f6nd\u00fcrebilir. Bu durumlar\u0131 kontrol edin ve kullan\u0131c\u0131ya uygun mesajlar g\u00f6sterin (\u00f6rn: &#8220;Bu iki nokta aras\u0131nda rota bulunamad\u0131&#8221;, &#8220;API kota a\u015f\u0131ld\u0131&#8221;).<br \/>\n*   <strong>Konum Hatalar\u0131<\/strong>: Kullan\u0131c\u0131n\u0131n girdi\u011fi konumlar ge\u00e7ersiz olabilir.<br \/>\n*   <strong>Kullan\u0131c\u0131 Aray\u00fcz\u00fc<\/strong>: Hata mesajlar\u0131n\u0131 <code>Toast<\/code>, <code>Snackbar<\/code> veya <code>AlertDialog<\/code> ile g\u00f6sterin. Y\u00fckleme g\u00f6stergeleri (<code>ProgressBar<\/code>) kullanarak API iste\u011fi s\u0131ras\u0131nda kullan\u0131c\u0131ya geri bildirim sa\u011flay\u0131n.<\/p>\n<h3>Performans Optimizasyonu<\/h3>\n<p>*   <strong>Arka Plan \u0130\u015f Par\u00e7ac\u0131klar\u0131<\/strong>: T\u00fcm a\u011f isteklerini ve yo\u011fun JSON ayr\u0131\u015ft\u0131rma i\u015flemlerini ana UI i\u015f par\u00e7ac\u0131\u011f\u0131ndan ay\u0131rarak uygulaman\u0131z\u0131n ak\u0131c\u0131 kalmas\u0131n\u0131 sa\u011flay\u0131n. <code>AsyncTask<\/code>, <code>Coroutines<\/code> veya <code>RxJava<\/code> gibi yap\u0131lar kullan\u0131n.<br \/>\n*   <strong>Gereksiz Yeniden \u00c7izimleri \u00d6nleme<\/strong>: E\u011fer rota verisi de\u011fi\u015fmediyse, haritay\u0131 tekrar tekrar \u00e7izmekten ka\u00e7\u0131n\u0131n.<br \/>\n*   <strong>Nesne Havuzlama<\/strong>: \u00c7ok say\u0131da marker veya poliline ekleyip \u00e7\u0131kar\u0131yorsan\u0131z, nesne havuzlama tekniklerini d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n*   <strong>Bellek Kullan\u0131m\u0131<\/strong>: \u00d6zellikle uzun rotalar ve \u00e7ok say\u0131da nokta i\u00e7in <code>LatLng<\/code> listelerinin bellek kullan\u0131m\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurun.<\/p>\n<h3>Google Maps Utility Library Kullan\u0131m\u0131<\/h3>\n<p>Daha \u00f6nce bahsetti\u011fimiz <code>PolyUtil.decode()<\/code> metodunun yan\u0131 s\u0131ra, Google Maps Utility Library ba\u015fka kullan\u0131\u015fl\u0131 ara\u00e7lar da sunar:<\/p>\n<p>*   <strong><code>SphericalUtil<\/code><\/strong>: \u0130ki <code>LatLng<\/code> noktas\u0131 aras\u0131ndaki mesafeyi, alan\u0131 veya bearing&#8217;i hesaplamak gibi co\u011frafi hesaplamalar i\u00e7in.<br \/>\n*   <strong><code>MarkerManager<\/code> ve <code>ClusterManager<\/code><\/strong>: \u00c7ok say\u0131da marker&#8217;\u0131 verimli bir \u015fekilde y\u00f6netmek ve yak\u0131n marker&#8217;lar\u0131 k\u00fcmelemek i\u00e7in.<\/p>\n<p>Bu k\u00fct\u00fcphaneleri kullanarak geli\u015ftirme s\u00fcrecinizi h\u0131zland\u0131rabilir ve uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131rabilirsiniz.<\/p>\n<h2>S\u0131k\u00e7a Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Geli\u015ftirme s\u00fcrecinde kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve potansiyel \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>API Key Hatalar\u0131 (<code>API_KEY_INVALID<\/code>, <code>API_KEY_NOT_AUTHORIZED<\/code>)<\/strong>:<br \/>\n    *   API anahtar\u0131n\u0131z\u0131n do\u011fru oldu\u011fundan ve <code>AndroidManifest.xml<\/code> dosyan\u0131zda do\u011fru yere (<code><application><\/code> etiketi alt\u0131nda <code><meta-data><\/code>) eklendi\u011finden emin olun.<br \/>\n    *   Google Cloud Console&#8217;da Haritalar SDK&#8217;s\u0131 ve Directions API&#8217;nin etkinle\u015ftirildi\u011fini kontrol edin.<br \/>\n    *   API anahtar\u0131n\u0131za uygulaman\u0131z\u0131n paket ad\u0131n\u0131 ve SHA-1 parmak izini ekleyerek k\u0131s\u0131tlamalar\u0131 do\u011fru yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n*   <strong>Directions API Kota A\u015f\u0131mlar\u0131 (<code>OVER_QUERY_LIMIT<\/code>)<\/strong>:<br \/>\n    *   Belirli bir zaman diliminde \u00e7ok fazla istek g\u00f6nderiyorsunuz demektir. API kullan\u0131m\u0131n\u0131z\u0131 optimize edin veya Google Cloud Console&#8217;dan kota art\u0131r\u0131m\u0131 talep edin (\u00fccretli olabilir).<br \/>\n    *   Gereksiz isteklerden ka\u00e7\u0131nmak i\u00e7in rota verilerini \u00f6nbelle\u011fe almay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n*   <strong><code>SecurityException<\/code> (\u0130zin Eksikli\u011fi)<\/strong>:<br \/>\n    *   <code>AndroidManifest.xml<\/code> dosyan\u0131zda gerekli <code>INTERNET<\/code> ve <code>ACCESS_FINE_LOCATION<\/code> gibi izinlerin tan\u0131mland\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   Android 6.0 ve \u00fczeri i\u00e7in \u00e7al\u0131\u015fma zaman\u0131 izinlerini do\u011fru bir \u015fekilde talep etti\u011finizden emin olun.<br \/>\n*   <strong>Haritan\u0131n Y\u00fcklenmemesi (Gri Ekran)<\/strong>:<br \/>\n    *   API anahtar\u0131n\u0131z\u0131n do\u011fru oldu\u011fundan ve k\u0131s\u0131tlamalar\u0131n do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   Cihazda Google Play Services&#8217;\u0131n g\u00fcncel ve etkin oldu\u011fundan emin olun.<br \/>\n    *   A\u011f ba\u011flant\u0131s\u0131n\u0131 kontrol edin.<br \/>\n*   <strong>JSON Ayr\u0131\u015ft\u0131rma Hatalar\u0131<\/strong>:<br \/>\n    *   API yan\u0131t\u0131n\u0131n format\u0131n\u0131 dikkatlice inceleyin. Bazen API yan\u0131t\u0131 beklenenden farkl\u0131 bir yap\u0131ya sahip olabilir (\u00f6rn: <code>ZERO_RESULTS<\/code> durumunda <code>routes<\/code> dizisi bo\u015f olabilir).<br \/>\n    *   <code>try-catch<\/code> bloklar\u0131 kullanarak JSON ayr\u0131\u015ft\u0131rma hatalar\u0131n\u0131 yakalay\u0131n.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Android Google Haritalar&#8217;da iki nokta aras\u0131nda rota \u00e7izmek, modern mobil uygulamalar\u0131n vazge\u00e7ilmez bir \u00f6zelli\u011fidir. Bu makalede, Google Haritalar SDK&#8217;s\u0131 ve Google Directions API&#8217;nin entegrasyonuyla bu i\u015flevselli\u011fin nas\u0131l ad\u0131m ad\u0131m uygulanaca\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde ele ald\u0131k. API anahtar\u0131 kurulumundan, harita entegrasyonuna, Directions API iste\u011fi yap\u0131s\u0131ndan JSON yan\u0131t\u0131n\u0131 ayr\u0131\u015ft\u0131rmaya ve polilineyi haritaya \u00e7izmeye kadar t\u00fcm s\u00fcre\u00e7leri kapsad\u0131k. Ayr\u0131ca, alternatif rotalar, ara noktalar, farkl\u0131 ula\u015f\u0131m modlar\u0131, hata y\u00f6netimi ve performans optimizasyonu gibi geli\u015fmi\u015f konulara da de\u011findik.<\/p>\n<p>Bu rehberi takip ederek, uygulaman\u0131za g\u00fc\u00e7l\u00fc ve kullan\u0131c\u0131 dostu bir rota \u00e7izim \u00f6zelli\u011fi ekleyebilirsiniz. Unutmay\u0131n ki Google API&#8217;lerinin kullan\u0131m ko\u015fullar\u0131, kota limitleri ve \u00fccretlendirme politikalar\u0131 zaman zaman de\u011fi\u015febilir, bu nedenle g\u00fcncel dok\u00fcmantasyonu d\u00fczenli olarak kontrol etmek \u00f6nemlidir. Kullan\u0131c\u0131 deneyimini en \u00fcst d\u00fczeye \u00e7\u0131karmak i\u00e7in g\u00f6rselle\u015ftirmeleri, hata y\u00f6netimini ve performans optimizasyonlar\u0131n\u0131 daima \u00f6n planda tutmal\u0131s\u0131n\u0131z. Android ekosisteminin sundu\u011fu esneklik ve Google Haritalar platformunun g\u00fcc\u00fcyle, kullan\u0131c\u0131lar\u0131n\u0131za etkileyici ve i\u015flevsel harita tabanl\u0131 deneyimler sunmaya haz\u0131rs\u0131n\u0131z.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Android Google Haritalar&#8217;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber Android platformunda co\u011frafi konum tabanl\u0131 uygulamalar geli\u015ftirirken, kullan\u0131c\u0131lar\u0131n iki nokta aras\u0131nda bir rota \u00e7izebilmesi temel ve s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir gereksinimdir.","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-41150","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>Android Google Haritalar&#039;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber - 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\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android Google Haritalar&#039;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber\" \/>\n<meta property=\"og:description\" content=\"Android Google Haritalar&#039;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber Android platformunda co\u011frafi konum tabanl\u0131 uygulamalar geli\u015ftirirken, kullan\u0131c\u0131lar\u0131n iki nokta aras\u0131nda bir rota \u00e7izebilmesi temel ve s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir gereksinimdir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-03T18:40:45+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Android Google Haritalar&#8217;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber\",\"datePublished\":\"2026-03-03T18:40:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/\"},\"wordCount\":2770,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/\",\"name\":\"Android Google Haritalar'da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-03-03T18:40:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android Google Haritalar&#8217;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber\"}]},{\"@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":"Android Google Haritalar'da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber - 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\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Android Google Haritalar'da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber","og_description":"Android Google Haritalar'da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber Android platformunda co\u011frafi konum tabanl\u0131 uygulamalar geli\u015ftirirken, kullan\u0131c\u0131lar\u0131n iki nokta aras\u0131nda bir rota \u00e7izebilmesi temel ve s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir gereksinimdir.","og_url":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-03-03T18:40:45+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Android Google Haritalar&#8217;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber","datePublished":"2026-03-03T18:40:45+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/"},"wordCount":2770,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/","name":"Android Google Haritalar'da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-03-03T18:40:45+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/android-google-haritalarda-iki-nokta-arasi-rota-cizimi-detayli-teknik-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Android Google Haritalar&#8217;da \u0130ki Nokta Aras\u0131 Rota \u00c7izimi: Detayl\u0131 Teknik Rehber"}]},{"@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\/41150","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=41150"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41150\/revisions"}],"predecessor-version":[{"id":41151,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41150\/revisions\/41151"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}