Маркер Google Map не работает

недавно я обнаружил, что «FusedLocationApi» устарел, поэтому я пытаюсь исправить свои приложения в отношении документа Google. мой код работает нормально, и моя активность получает место, но когда я пытаюсь установить маркер, он не работает. я так смущен, может ли кто-нибудь помочь мне найти там, где я пропал?

Вот мой код.

class DealerMapsActivity : FragmentActivity(), OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ private val TAG = "DealerMapsActivity" private var mMap: GoogleMap? = null private var mGoogleApi: GoogleApiClient? = null private lateinit var binding: ActivityDealerMapsBinding private var myLastLocation: Location? = null private var myMarker: Marker? = null private var mFusedLocationClient: FusedLocationProviderClient? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d(TAG,"onCreate") binding = DataBindingUtil.setContentView(this,R.layout.activity_dealer_maps) val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this) } 

в этом случае я использую LocationCallback для получения местоположения.

 private var mLocationCallback: LocationCallback = object : LocationCallback() { override fun onLocationResult(locationResult: LocationResult?) { for (location in locationResult!!.locations) { Log.i(TAG, "accuracy: "+ location.accuracy + " Location: " + location.latitude + " " + location.longitude) myLastLocation = location } SetMapMarker() if(myLastLocation!!.accuracy > 0) { Log.i(TAG, "set accuracy into text: "+ myLastLocation!!.accuracy) binding.vAccurate.text = "Accurate to "+myLastLocation!!.accuracy.toInt().toString()+ " meters" } } } 

и вот мой код, чтобы установить Map Marker.

 fun SetMapMarker(){ Log.i(TAG, "set marker") if(myMarker != null){ myMarker!!.remove() } val latlng = LatLng(myLastLocation!!.latitude, myLastLocation!!.longitude) if(myMarker == null){ myMarker = mMap!!.addMarker( MarkerOptions() .position(latlng) .icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_BLUE)) ) } myMarker!!.snippet = "ok" myMarker!!.title = "i'm here" val camera = CameraPosition .builder() .target(latlng) .zoom(16.0F) .build() mMap!!.animateCamera(CameraUpdateFactory.newCameraPosition(camera)) } 

}

как @J Рамеш предлагает, очень смешно. я просто заменил это.

 fun SetMapMarker(){ val latlng = LatLng(myLastLocation!!.latitude, myLastLocation!!.longitude) Log.i(TAG, "set marker") if(myMarker != null){ myMarker!!.position = latlng } if(myMarker == null){ myMarker = mMap!!.addMarker( MarkerOptions() .position(latlng) .icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_BLUE)) ) // you can set title and message only one time not required all time (if you want to change message every time then write these line outside if statement) myMarker!!.snippet = "ok" myMarker!!.title = "i'm here" } val camera = CameraPosition .builder() .target(latlng) .zoom(16.0F) .build() mMap!!.animateCamera(CameraUpdateFactory.newCameraPosition(camera)) } 

надеюсь, кто-то поможет.