Skip to content

Commit 48b4c8d

Browse files
authored
add long press event for selecting a destination (#1328)
1 parent 404002f commit 48b4c8d

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

app/src/main/java/com/mapbox/services/android/navigation/testapp/example/ui/ExampleActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class ExampleActivity : AppCompatActivity(), ExampleView {
9393

9494
override fun onMapReady(mapboxMap: MapboxMap) {
9595
map = NavigationMapboxMap(mapView, mapboxMap)
96+
mapboxMap.addOnMapLongClickListener{ presenter.onMapLongClick(it) }
9697
presenter.buildDynamicCameraFrom(mapboxMap)
9798
}
9899

app/src/main/java/com/mapbox/services/android/navigation/testapp/example/ui/ExamplePresenter.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ class ExamplePresenter(private val view: ExampleView, private val viewModel: Exa
173173
}
174174
}
175175

176+
fun onMapLongClick(point: LatLng) {
177+
viewModel.reverseGeocode(point);
178+
}
179+
176180
fun onMilestoneUpdate(milestone: Milestone?) {
177181
milestone?.let {
178182
if (milestone is BannerInstructionMilestone) {
@@ -192,6 +196,11 @@ class ExamplePresenter(private val view: ExampleView, private val viewModel: Exa
192196
viewModel.route.observe(owner, Observer { onRouteFound(it) })
193197
viewModel.progress.observe(owner, Observer { onProgressUpdate(it) })
194198
viewModel.milestone.observe(owner, Observer { onMilestoneUpdate(it) })
199+
viewModel.geocode.observe(owner, Observer {
200+
it?.features()?.first()?.let {
201+
onDestinationFound(it)
202+
}
203+
})
195204
viewModel.activateLocationEngine()
196205
viewModel.loadOfflineFiles(offlineCallback)
197206
}

app/src/main/java/com/mapbox/services/android/navigation/testapp/example/ui/ExampleViewModel.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ import com.mapbox.android.core.location.LocationEngine
99
import com.mapbox.android.core.location.LocationEnginePriority
1010
import com.mapbox.android.core.location.LocationEngineProvider
1111
import com.mapbox.api.directions.v5.models.DirectionsRoute
12+
import com.mapbox.api.geocoding.v5.GeocodingCriteria
13+
import com.mapbox.api.geocoding.v5.MapboxGeocoding
14+
import com.mapbox.api.geocoding.v5.models.GeocodingResponse
1215
import com.mapbox.geojson.Point
16+
import com.mapbox.mapboxsdk.Mapbox
17+
import com.mapbox.mapboxsdk.geometry.LatLng
1318
import com.mapbox.services.android.navigation.testapp.NavigationApplication
1419
import com.mapbox.services.android.navigation.testapp.NavigationApplication.Companion.instance
1520
import com.mapbox.services.android.navigation.testapp.R
@@ -21,6 +26,10 @@ import com.mapbox.services.android.navigation.ui.v5.voice.SpeechPlayerProvider
2126
import com.mapbox.services.android.navigation.v5.milestone.Milestone
2227
import com.mapbox.services.android.navigation.v5.navigation.MapboxNavigation
2328
import com.mapbox.services.android.navigation.v5.routeprogress.RouteProgress
29+
import retrofit2.Call
30+
import retrofit2.Callback
31+
import retrofit2.Response
32+
import timber.log.Timber
2433
import java.util.Locale.US
2534

2635
class ExampleViewModel(application: Application) : AndroidViewModel(application) {
@@ -34,6 +43,7 @@ class ExampleViewModel(application: Application) : AndroidViewModel(application)
3443
val progress: MutableLiveData<RouteProgress> = MutableLiveData()
3544
val milestone: MutableLiveData<Milestone> = MutableLiveData()
3645
val destination: MutableLiveData<Point> = MutableLiveData()
46+
val geocode: MutableLiveData<GeocodingResponse> = MutableLiveData()
3747
var collapsedBottomSheet: Boolean = false
3848

3949
private val locationEngine: LocationEngine
@@ -102,6 +112,23 @@ class ExampleViewModel(application: Application) : AndroidViewModel(application)
102112
return navigation
103113
}
104114

115+
fun reverseGeocode(point: LatLng) {
116+
val reverseGeocode = MapboxGeocoding.builder()
117+
.accessToken(Mapbox.getAccessToken()!!)
118+
.query(Point.fromLngLat(point.longitude, point.latitude))
119+
.geocodingTypes(GeocodingCriteria.TYPE_ADDRESS)
120+
.build()
121+
reverseGeocode.enqueueCall(object : Callback<GeocodingResponse> {
122+
override fun onResponse(call: Call<GeocodingResponse>, response: Response<GeocodingResponse>) {
123+
geocode.value = response.body()
124+
}
125+
126+
override fun onFailure(call: Call<GeocodingResponse>, t: Throwable) {
127+
Timber.e(t, "Geocoding request failed")
128+
}
129+
})
130+
}
131+
105132
fun onDestroy() {
106133
navigation.onDestroy()
107134
speechPlayer.onDestroy()

0 commit comments

Comments
 (0)