Kotlin Местоположение далеко от моего местоположения. Как я могу сделать его более аккуратным? - PullRequest
1 голос
/ 21 февраля 2020
private lateinit var fusedLocationClient: FusedLocationProviderClient
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val name=findViewById(R.id.editText) as TextView
        var text=""
        locationManager = getSystemService(LOCATION_SERVICE) as LocationManager?

        val button =findViewById(R.id.button) as Button
        var mainlink=""
        if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)   == PackageManager.PERMISSION_GRANTED) {
            val adresstext= findViewById(R.id.editText3)as TextView
            var deneme=""
            fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
            fusedLocationClient.lastLocation.addOnSuccessListener {

            }
            fusedLocationClient.lastLocation.addOnSuccessListener {
                    location -> location

                var locationx=location.longitude
                var locationy=location.latitude

                val name = findViewById(R.id.textView) as TextView
                var geocoder: Geocoder
                var listadress :List<Address>


                geocoder = Geocoder(this, Locale.getDefault());
                listadress =geocoder.getFromLocation(locationy,locationx,1)
                var adress=listadress[0].getAddressLine(0)
                adresstext.text=adress
                text=deneme
                mainlink="http://maps.google.com/maps?q="+locationy+","+locationx+""
                mainlink=mainlink+" "+text
                text=mainlink
            }
        }
        else
        {
            val permission= arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION)
            ActivityCompat.requestPermissions(this, permission,0)
        }

Все в порядке, но когда он занимает место, он находится на расстоянии 200 м от меня. Как я могу сделать это более точным? Я беру долготу и широту для своего устройства, оно берет его, но когда я показываю на карте Google, оно дает местоположение на расстоянии 200 м, я проверял широту и долготу и карты Google. И провал по широте и долготе уходит далеко от меня.

1 Ответ

1 голос
/ 21 февраля 2020

Пожалуйста, попробуйте это!

private fun requestLocationUpdates() {
        var mLocationRequest = LocationRequest()
        mLocationRequest!!.setInterval(AppConstants.LOCATION_INTERVAL.toLong())
        mLocationRequest!!.setFastestInterval(AppConstants.FASTEST_LOCATION_INTERVAL.toLong())
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
        var client: FusedLocationProviderClient =
            LocationServices.getFusedLocationProviderClient(applicationContext)

        val permission = ContextCompat.checkSelfPermission(
            applicationContext,
            Manifest.permission.ACCESS_FINE_LOCATION
        )
        if (permission == PackageManager.PERMISSION_GRANTED) {
            // Request location updates and when an update is
            client.requestLocationUpdates(mLocationRequest, object : LocationCallback() {
                override fun onLocationResult(locationResult: LocationResult?) {
                    val location = locationResult!!.lastLocation
                    if (location != null) {
                        latitude = location!!.latitude
                        longitude = location!!.longitude

                        AppConstants.CURRENT_LATITUDE = location!!.latitude
                        AppConstants.CURRENT_LONGITUDE = location!!.longitude

                    }
                }
            }, null)
        }
    }

class AppConstants {
 var CURRENT_LATITUDE = 0.0
 var CURRENT_LONGITUDE = 0.0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...