Google, Yandex ve Huawei API'leri ile Harita Yönlendirmeleri


Görsel Referansı


Selamlar. Bu yazıda sizlere günlük hayatta sıkça kullandığımız haritalardaki yönlendirme işlemlerinin nasıl yapıldığını anlatacağım. Bu işlem ile basitçe kendinizin belirleyeceği iki nokta arasında rota çizdirme işlemini nasıl yapacağınızı öğreteceğim. Ayrıca yönlendirme işlemini ayrı ayrı Google Maps, Yandex Maps ve Huawei Maps üzerinde her platformun kendi Map kitiyle yapacağız. Uygulamanızda hangi platformun harita kitini kullanacağınıza kendiniz karar verebilirsiniz.


Yapacağımız işlemleri yeni bir proje oluşturarak ya da halihazırda var olan projelerinizin üzerine ekleyerek kullanabilirsiniz. Her iki yolu tercih ederken de ilk olarak üzerinde durmamız gereken konu ise izinler.


İzinler

İlk iş bütün API’lerde ortak olarak kullanacağımız internet izinlerini yazarak başlayalım. Bu izinleri AndroidManifest.xml dosyasında manifest etiketinin altına yazıyoruz. Yapacağımız uygulamalarda kendi konumumuzu kullanmayacağımız için bu uygulamada konum izni almıyoruz.


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

İzinleri de aldığımıza göre ilk olarak Google Maps MapKit ile rota nasıl çizilir öğrenmeye başlayalım.


Google Maps ve Google Directions API ile Rota Çizimi


Google Maps ve Directions API ile yönlendirme yaparken haritanın uygulamaya entegre edilmesi ve üzerinde işaretlemeler yapılması işlemlerini Google Maps API ile gerçekleştireceğiz. Daha sonra ise yaptığımız işaretlemelere göre yönlendirme işlemini ise Retrofit ve RxJava yardımı ile Directions API’ye istek yaparak gerçekleştireceğiz. Yaptığımız isteğin sonucunda bize API’den yönlendirmeyi çizebilmemiz için noktalar geri döndürülecek ve biz de bu noktalara göre yönlendirmemizi polyline ile çizerek işlemi tamamlayacağız.


Uygulamayı yazmaya başlamadan önce kullanacağımız kütüphaneleri projemize ekleyelim.


Kullanılacak Kütüphanelerin Eklenmesi


Google Maps ile yönlendirme işlemini gerçekleştirirken Google, Retrofit ve RxJava kütüphanelerini modül seviyesindeki build.gradle dosyasına ekliyoruz.


Retrofit kütüphanesini API’ye istek yaparken kullanmak için projemize eklerken, RxJava kütüphanemizi ise bu işlemleri yaparken isteklerimizin ana thread'i bloklamasını ve uygulamanın OutOfMemory hatası ile karşılaşmasını önlemek için projemize ekliyoruz.


dependencies {
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    implementation 'com.android.support:multidex:1.0.3'
    //Google
    implementation 'com.google.maps.android:android-maps-utils:0.5'
    //Retrofit
    i