#android #kotlin #google-maps-android-api-3
#Android #kotlin #google-maps-android-api-3
Вопрос:
Каждый раз, когда местоположение обновляется через location listener, на моей карте появляется новый маркер, который выглядит так странно. Я просто хочу, чтобы был обновлен только один маркер.
override fun onMapReady(googleMap: GoogleMap?) {
val locationListener = LocationListener {
val latLng = LatLng(it.latitude,it.longitude)
googleMap!!.addMarker(
MarkerOptions()
.position(latLng)
.title("My Location")
)
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,16f))
}
try {
locationManager!!.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
1000, 0f, locationListener
)
} catch (ex: SecurityException) {
ex.printStackTrace()
}
}
Ответ №1:
Создайте поле в классе для маркера.
private lateinit var locationMarker: Marker
Добавляйте маркер на карту только в том случае, если ваше поле не было инициализировано, иначе обновите предыдущий маркер. Вот так:
val locationListener = LocationListener {
val latLng = LatLng(it.latitude,it.longitude)
if(::locationMarker.isInitialized) {
locationMarker.position = latLng
} else {
locationMarker = googleMap!!.addMarker(
MarkerOptions()
.position(latLng)
.title("My Location")
)
}
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,16f))
}