Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌地图API(Android SDK)。每次通过位置侦听器更新位置时,地图中都会显示一个新的标记_Android_Kotlin_Google Maps Android Api 3 - Fatal编程技术网

谷歌地图API(Android SDK)。每次通过位置侦听器更新位置时,地图中都会显示一个新的标记

谷歌地图API(Android SDK)。每次通过位置侦听器更新位置时,地图中都会显示一个新的标记,android,kotlin,google-maps-android-api-3,Android,Kotlin,Google Maps Android Api 3,每次通过位置侦听器更新位置时,一个新的标记就会出现在我的地图上,看起来很奇怪。我只想要一个将被更新的标记 override fun onMapReady(googleMap: GoogleMap?) { val locationListener = LocationListener { val latLng = LatLng(it.latitude,it.longitude) googleMap!!.addMarker(

每次通过位置侦听器更新位置时,一个新的标记就会出现在我的地图上,看起来很奇怪。我只想要一个将被更新的标记

 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()
    }
}

在类中为标记创建一个字段

private lateinit var locationMarker:Marker
仅在字段尚未初始化时添加要映射的标记,否则更新上一个标记。像这样:

val locationListener=locationListener{
val latLng=latLng(it.纬度,it.经度)
如果(::locationMarker.isInitialized){
locationMarker.position=车床
}否则{
locationMarker=谷歌地图!!.addMarker(
标记选项()
.位置(车床)
.title(“我的位置”)
)
}
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,16f))
}