android - Kotlin Location is far from my location 我怎样才能让它更准确
问题描述
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)
}
一切都很好,但是当它定位时,它离我有 200m 远。我怎样才能使它更准确?我为我的设备获取经度和纬度,但是当我在谷歌地图中显示时,它给出了 200 米外的位置,我检查了经度纬度和谷歌地图。而在经纬度上的失败离我很远。
解决方案
请试试这个!
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
}
推荐阅读
- python - MWAA:从 requirements.txt 安装 Airflow Google Providers 时遇到问题
- reactjs - 无法使用注入的 JavaScript 重新加载 WebView
- python - 即使我的索引不是日期时间,熊猫也可以滚动启用偏移量
- spring-boot - Flux Reactive Microservice - 一个微服务向其他微服务发出关于背压的信号
- javascript - 外部 CSS 未在 window.print() 中加载
- pyspark - pyspark 检查每个名字是否有3个数据
- django - DRF:如何访问自定义 DecimalField 类中的“上下文”?
- javascript - grpc客户端不接收服务器流数据
- reactjs - 如何在底部 tabBar onpress 上添加音效?
- tcp - TCP MSS 未强制执行