Google 地图 API(Android SDK)。每次通过位置侦听器更新位置时,地图中都会显示一个新标记
Google Maps API (Android SDK). Every time location is updating through location listener, a new marker is showing in the maps
每次通过位置侦听器更新位置时,我的地图中都会出现一个看起来很奇怪的新标记。我只想要一个会更新的标记。
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()
}
}
在 class 中为标记创建一个字段。
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))
}
每次通过位置侦听器更新位置时,我的地图中都会出现一个看起来很奇怪的新标记。我只想要一个会更新的标记。
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()
}
}
在 class 中为标记创建一个字段。
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))
}