0

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

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

1 回答 1

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))
}
于 2020-10-29T16:05:51.977 回答