В настоящее время я разрабатываю приложение, которое требует размещения в соответствии с текущим положением камеры на карте Google в Android Studio.
Я провел два дня в поисках в Интернете, но большинство из них указывают на использование PlaceDetectionClient.getCurrentPlace () метод, который предоставляет мне только места, окружающие текущее местоположение пользователя или устройства.
Я уже использую GeoCoder для получения адреса предоставленного Location , которыйработает как положено.
FetchAddressIntentService.kt
val geocoder = Geocoder(this, Locale.getDefault())
try {
addresses = geocoder.getFromLocation(location.latitude, location.longitude, 1)
} catch (ioException: IOException) {
// Catch network or other I/O problems.
errorMessage = ioException.message!!
Log.e("_LOCA", errorMessage, ioException)
} catch (illegalArgumentException: IllegalArgumentException) {
// Catch invalid latitude or longitude values.
errorMessage = illegalArgumentException.message!!
Log.e("_LOCA", "$errorMessage. Latitude = $location.latitude , " +
"Longitude = $location.longitude", illegalArgumentException)
}
if (addresses.isEmpty()){
if (errorMessage.isEmpty()){
errorMessage = "No address found"
Log.e("_LOCA", "No address found")
}
deliverResultToReceiver(Constants.FAILURE_RESULT, errorMessage)
}
else {
val address = addresses[0]
val addressFragments = with(address) {
(0..maxAddressLineIndex).map { getAddressLine(it) }
}
deliverResultToReceiver(Constants.SUCCESS_RESULT,
addressFragments.joinToString(separator = "\n"))
}
Но он дает мне только адрес всей области, однако я хочу получить результаты, поскольку mPlaceDetection.getCurrentPlace(null)
обеспечивает этоНазвание места вокруг местоположения пользователя.
Я также пытался PlaceAutoCompleteApi , но для этого требуется строка запроса , тогда как я хочу получить Places , выполнив следующие действия:
mMap.setOnCameraIdleListener(object : GoogleMap.OnCameraIdleListener {
override fun onCameraIdle() {
var cameraPosition = mMap.cameraPosition
var latLng = cameraPosition.target
var location = Location("")
location.latitude = latLng.latitude
location.longitude = latLng.longitude
mCurrentPinLocation = location
this@LocationTracker.fetchAddressFor(mCurrentPinLocation)
// Here I want to retrieve Places based on camera
// position's target location
this@LocationTracker.showPlacesFor(mCurrentPinLocation)
}
})