package com.amazon.location.android.quickstart import android.os.Bundle import android.util.Log import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import com.amplifyframework.core.Amplify import com.amplifyframework.geo.location.models.AmazonLocationPlace import com.amplifyframework.geo.maplibre.view.MapLibreView import com.amplifyframework.geo.maplibre.view.support.fadeIn import com.amplifyframework.geo.maplibre.view.support.fadeOut import com.amplifyframework.geo.models.Coordinates import com.amplifyframework.geo.options.GeoSearchByCoordinatesOptions import com.mapbox.mapboxsdk.camera.CameraPosition import com.mapbox.mapboxsdk.geometry.LatLng import com.mapbox.mapboxsdk.maps.MapboxMap class MainActivity : AppCompatActivity() { private val mapView by lazy { findViewById(R.id.mapView) } private val descriptionView by lazy { findViewById(R.id.description_text_view) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mapView.getMapAsync { map -> val initialPosition = LatLng(47.6160281982247, -122.32642111977668) map.cameraPosition = CameraPosition.Builder() .target(initialPosition) .zoom(13.0) .build() map.addOnCameraMoveStartedListener { toggleDescriptionText() } map.addOnCameraIdleListener { reverseGeocode(map) } } } private fun reverseGeocode(map: MapboxMap) { val options = GeoSearchByCoordinatesOptions.builder() .maxResults(1) .build() val centerCoordinates = Coordinates().apply { longitude = map.cameraPosition.target.longitude latitude = map.cameraPosition.target.latitude } Amplify.Geo.searchByCoordinates(centerCoordinates, options, { result -> result.places.firstOrNull()?.let { place -> val amazonPlace = (place as AmazonLocationPlace) runOnUiThread { toggleDescriptionText(amazonPlace.label) } } }, { exp -> Log.e("AndroidQuickStart", "Failed to reverse geocode : $exp") } ) } private fun toggleDescriptionText(label: String? = "") { if (label.isNullOrBlank()) { descriptionView.fadeOut() } else { descriptionView.text = label descriptionView.fadeIn() } } override fun onStart() { super.onStart() mapView?.onStart() } override fun onResume() { super.onResume() mapView?.onResume() } override fun onPause() { super.onPause() mapView?.onPause() } override fun onStop() { super.onStop() mapView?.onStop() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) mapView?.onSaveInstanceState(outState) } override fun onLowMemory() { super.onLowMemory() mapView?.onLowMemory() } override fun onDestroy() { super.onDestroy() mapView?.onDestroy() } }