我有一个应用程序,它可以让用户插入他想要的位置,并通过他的lat和lang故意打开该位置,我遇到了一个有趣的错误,所有保存的位置都打开了同一个位置,所以我调试了代码,发现我正确地从数据库中获得了lat和lang,但当我试图将其解析为Uri时,它会缩短到只有8位数字。[![在此输入图像描述][1]][1]
例如,Lat是30.071769159309497,它被缩短为30.071769,打开了一个错误的位置[1] :https://i.stack.imgur.com/SNMYT.jpg
这是我的代码
val strUri =
"http://maps.google.com/maps?q=loc:${place.placeLocationLat},${place.placeLocationLang} (${place.placeName})"
binding.place = place
binding.placeLocation.setOnClickListener {
showMap(Uri.parse(strUri))
}
@SuppressLint("QueryPermissionsNeeded")
fun showMap(geoLocation: Uri) {
var intent = Intent(Intent.ACTION_VIEW).apply {
data = geoLocation
}
packageManager?.resolveActivity(intent, 0)
if (intent.resolveActivity(packageManager!!) != null) {
startActivity(intent)
}
}
我不知道为什么它会缩短,也不知道如何解决这个问题。
由于代码中的拼写错误,您的位置似乎不正确
var lat : Double = place.placeLocationLat!!.toDouble()
var lang : Double = place.placeLocationLat!!.toDouble()
而第二行应该是
var lng : Double = place.placeLocationLong!!.toDouble()
更新:
val lat = 30.071769159909497
val strUri =
"http://maps.google.com/maps?q=loc:${lat}"
println(strUri)
打印'http://maps.google.com/maps?q=loc:30.071769159909497',无截断
您应该检查变量的类型。在将结果转换为Double的代码中,为什么在字符串替换中跳过此转换?