Yolbil Navigasyon Arayüzü Modülü

Bu modül Yolbil haritasını üzerinde navigasyon arayüzü gösterimini sağlamaktadır. Sağlanan bu arayüz “Varış için kalan dakika”, “Varış için kalan uzaklık”, “Varılacak tahmini zaman” gibi bilgileri ekranda göstermeyi sağlamaktadır.

Kurulum

app -> build.gradle

implementation 'com.basarsoft.api:navigationui:2.4.4'

Kullanım

Yolbil haritası initialize işlemi onCreate methodunda aşağıdaki şekilde yapılır.

YolbilNavigationModule.initialize(this)

View map = Yolbil.initialize(..., YolbilEventController, ...)
YolbilEventController.registerListener(this)

val mapLayout = findViewById<FrameLayout>(R.id.map_layout)
mapLayout.addView(map)

Yolbil haritasının eklendiği layout dosyasına navigasyon arayüzü eklenir.

<com.basarsoft.navigationui.NavigationInterfaceUI
      android:id="@+id/nav_interface"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginBottom="8dp"
      android:visibility="gone"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintStart_toStartOf="parent" />       

Navigasyon arayüzündeki text viewların renkleri ve butonun iconu değiştirilebilir.

  • Kalan süre için app:remaining_time_color=””
  • Varış zamanı için app:arrival_time_color=””
  • Mesafe için app:distance_color=””
  • Navigasyon durdur butonu drawable’ı için app:stop_button_src=””
  • Ortala butonu drawable’ı için app:center_button_src=””
  • Ortala butonu text rengi için app:button_text_color=””
  • Ortala butonu arka plan rengi için app:button_background_color=””
  • Kart arka plan rengi için app:card_background_color=””
  • Default dark mode renkleri için app:darkMode=”” true-false

Default dark mode’u programatik olarak ayarlamak için

  nav_interface.setDefaultDarkMode()

methodu kullanılabilir.

Navigasyon arayüzündeki nesnelerin konumları değiştirilebilir.

  • Ortala butonunun konumu için app:place_center_button=”up” ya da app:place_center_button=”bottom”
  • Navigasyon durdurma butonunun konumu için app:place_stop_button=”left” ya da app:place_stop_button=”right”
  • Navigasyon arayüzünün konumu için app:navinfo_position=”left” ya da app:navinfo_position=”right”
  • Navigasyon arayüzünün sağdan sola tüm alanı kaplaması için app:navinfo_widht=”match” , arayüz içindeki nesnelerin boyutu kadar alan kaplaması için app:navinfo_widht=”wrap”

Yukarıdaki özellikler arayüze eklenebilir.

onResume methodu içerisinde navigasyon arayüzünün initialize işlemi yapılır. Initalize işlemi yapılırken arayüze eklenen NavigationInterfaceUI objesi, eğer navigasyon hesaplanmasının başlaması ve bitmesi durumları uygulama tarafında alınmak isteniyorsa NavigationListener değerleri girilir.

override fun onResume() {
    super.onResume()
	YolbilNavigationModule.initVariables(nav_interface, true)
}

veya

override fun onResume() {
    super.onResume()
	YolbilNavigationModule.initVariables(nav_interface, true, maxFocusZoom, isTiltEnable)
}

Navigasyon başlatma işlemi aşağıdaki şekilde yapılır. Method parametre olarak startPoint ve targetPoint almaktadır. Opsiyonel olarak isFastRoute, useTollRoad, useFerryboat, useRestrictedRoad, routeType, useOnlineRoute değerleri de boolean olarak girilebilmektedir.

val startPoint: Point! = NavigationLayer.getGpsMarker()
val navigationResult: NavigationResultEnum = YolbilNavigationModule.startNavigation(startPoint, targetPoint)

Navigasyon başlatma methodu NavigationResultEnum değeri döner. NavigationResultEnum değerleri aşağıdaki gibidir.

enum class NavigationResultEnum {
	NO_START_POINT,
	NO_TARGET_POINT,
	SUCCESSFUL
}

Navigasyon hesaplanmasının başlaması ve bitmesi durumlarının takibi için NavigationListener interface’i implement edilmelidir. NavigationListener interface’inin içeriği aşağıdaki gibidir.

interface NavigationListener {  
  fun navCalculationStarted()  
  fun navCalculationEnded() 
  fun navFinished() 
  fun onNavigationStopButtonPressed()
}

Navigasyonun devam edip etmediğini öğrenmek için aşağıdaki method kullanılabilir.

  val isNavContinues = YolbilNavigationModule.isNavigationContinues()

Not: Eğer UI’da iptal butonuna basınca navigasyon bitsin istiyorsanız aşağıdaki gibi kullanım sağlayınız.

    override fun onNavigationStopButtonPressed() {
        YolbilNavigationModule.stopNavigation()
    }

Gereksinimler

  • Android 5 ve üzeri için çalışır.