【发布时间】:2020-01-19 07:39:34
【问题描述】:
我想做一个计算跑步者距离的应用程序,但是 LocationManager 提供的 distanceBetween 仍然显示为 0。我有速度并且工作正常,所以 onLocationChanged 函数很好,但是我在获取距离时做错了。
override fun onLocationChanged(location: Location?) {
val speed : Double = (location!!.speed * 3600 / 1000).toDouble()
updateUI(speed)
lat_text_view.text = location.latitude.toString()
lon_text_view.text = location.longitude.toString()
val startLat: Double = location.latitude
val startLon: Double = location.longitude
val endLat: Double = location.latitude
val endLon: Double = location.longitude
val results = FloatArray(1)
Location.distanceBetween(startLat, startLon, endLat, endLon, results)
distance_text_view.text = results[0].toString()
}
【问题讨论】:
-
您的
endLat与startLat相同,endLon与endLon相同 -
从哪里获取其他值?
-
你更清楚。距离取决于 2 个
LatLng值。首先决定你需要哪 2 个LatLng距离。 -
“从哪里获取其他值?” 您将把起始位置的坐标存储在范围在
onLocationChanged()方法之外的变量中。因此,它们可能是onLocationChanged()所在的类的成员。 -
你是对的!非常感谢您的帮助。
标签: android kotlin android-location