#android-studio #google-maps #google-maps-markers
Вопрос:
[После того, как я обновил gradle, я не могу получить местоположение, обычно долгота в onCreate равна нулю, но как только действие перезагружено, оно начинает работать нормально.
Зависимости для Google используются :
implementation 'com.google.android.gms:play-services-maps:17.0.1'
implementation 'com.google.android.gms:play-services-location:18.0.0'
implementation 'com.google.android.gms:play-services-maps:17.0.1'
implementation 'com.google.maps.android:android-maps-utils:0.5'
implementation 'com.google.android.libraries.places:places:2.5.0'
Подключение обоих маркеров
private fun setMarkersDrawDirections(acceptRideResponseItem: AcceptRideResponseItem) {
marker = map?.addMarker(
acceptRideResponseItem.pickupAddress.location.lat?.let {
acceptRideResponseItem.pickupAddress.location.lng?.let { it1 ->
LatLng(
it,
it1
)
}
}?.let {
MarkerOptions()
.position(
it
)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_location))
}
)
dropOffmarker = map?.addMarker(
acceptRideResponseItem.dropoffAddress.location.lat?.let {
acceptRideResponseItem.dropoffAddress.location.lng?.let { it1 ->
LatLng(
it,
it1
)
}
}?.let {
MarkerOptions()
.position(
it
)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_location_destination))
}
)
Распространенный способ получения и отправки адреса
suspend fun getAddress(lat: Double?, lng: Double?, context: Context?): Address? {
return try {
val geocoder = Geocoder(context, Locale.getDefault())
if (lat != null amp;amp; lng != null) {
withContext(Dispatchers.IO) {
geocoder.getFromLocation(lat, lng, 1)[0]
}
} else
null
} catch (exception: Exception) {
return getAddress(lat,lng,context)
}
}
Map Fragment
val latLng = map?.cameraPosition?.target
val coef = 250 * 0.0000089;
val newLat = latLng?.latitude?.plus(coef);
val newLong = latLng?.longitude?.plus(coef / kotlin.math.cos(latLng.latitude * 0.018));
val newLatLong = newLong?.let { it1 -> newLat?.let { it2 -> LatLng(it2, it1) } }
dropOffmarker = map?.addMarker(
newLatLong?.let { it1 ->
MarkerOptions()
.position(it1)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_location_destination)).draggable(true)
}
)
map?.animateCamera(
CameraUpdateFactory.newLatLngZoom(
newLatLong, DEFAULT_ZOOM.toFloat()
)
)