@@ -6,6 +6,8 @@ import android.content.Intent
66import android.content.IntentFilter
77import android.location.Location
88import android.os.Bundle
9+
10+ import org.json.JSONObject
911import androidx.appcompat.app.AppCompatActivity
1012import com.eopeter.fluttermapboxnavigation.FlutterMapboxNavigationPlugin
1113import com.eopeter.fluttermapboxnavigation.R
@@ -24,6 +26,7 @@ import com.mapbox.geojson.Point
2426import com.mapbox.maps.MapView
2527import com.mapbox.maps.Style
2628import com.mapbox.maps.plugin.gestures.OnMapLongClickListener
29+ import com.mapbox.maps.plugin.gestures.OnMapClickListener
2730import com.mapbox.maps.plugin.gestures.gestures
2831import com.mapbox.navigation.base.extensions.applyDefaultNavigationOptions
2932import com.mapbox.navigation.base.extensions.applyLanguageAndVoiceUnitOptions
@@ -85,6 +88,7 @@ class NavigationActivity : AppCompatActivity() {
8588 binding = NavigationActivityBinding .inflate(layoutInflater)
8689 setContentView(binding.root)
8790 binding.navigationView.addListener(navigationStateListener)
91+ binding.navigationView.registerMapObserver(onMapClick)
8892 accessToken =
8993 PluginUtilities .getResourceFromContext(this .applicationContext, " mapbox_access_token" )
9094
@@ -103,6 +107,9 @@ class NavigationActivity : AppCompatActivity() {
103107 }
104108 }
105109
110+ if (FlutterMapboxNavigationPlugin .enableOnMapTapCallback) {
111+ binding.navigationView.registerMapObserver(onMapClick)
112+ }
106113 val act = this
107114 // Add custom view binders
108115 binding.navigationView.customizeViewBinders {
@@ -182,6 +189,9 @@ class NavigationActivity : AppCompatActivity() {
182189 if (FlutterMapboxNavigationPlugin .longPressDestinationEnabled) {
183190 binding.navigationView.unregisterMapObserver(onMapLongClick)
184191 }
192+ if (FlutterMapboxNavigationPlugin .enableOnMapTapCallback) {
193+ binding.navigationView.unregisterMapObserver(onMapClick)
194+ }
185195 binding.navigationView.removeListener(navigationStateListener)
186196
187197 MapboxNavigationApp .current()?.unregisterBannerInstructionsObserver(this .bannerInstructionObserver)
@@ -426,4 +436,27 @@ class NavigationActivity : AppCompatActivity() {
426436 return false
427437 }
428438 }
439+
440+ /* *
441+ * Notifies with attach and detach events on [MapView]
442+ */
443+ private val onMapClick = object : MapViewObserver (), OnMapClickListener {
444+
445+ override fun onAttached (mapView : MapView ) {
446+ mapView.gestures.addOnMapClickListener(this )
447+ }
448+
449+ override fun onDetached (mapView : MapView ) {
450+ mapView.gestures.removeOnMapClickListener(this )
451+ }
452+
453+ override fun onMapClick (point : Point ): Boolean {
454+ var waypoint = mapOf<String , String >(
455+ Pair (" latitude" , point.latitude().toString()),
456+ Pair (" longitude" , point.longitude().toString())
457+ )
458+ sendEvent(MapBoxEvents .ON_MAP_TAP , JSONObject (waypoint).toString())
459+ return false
460+ }
461+ }
429462}
0 commit comments