如何使用 Mapbox Kotlin 计算两个坐标之间的距离

Posted

技术标签:

【中文标题】如何使用 Mapbox Kotlin 计算两个坐标之间的距离【英文标题】:how to calculate Distance between two coordinates using Mapbox Kotlin 【发布时间】:2021-04-27 19:09:28 【问题描述】:

如何获取 Mapbox 导航路线的距离?在双格式中,我不想绘制路线我只需要计算两个点之间的距离,我已经能够使用 Truf 计算距离

Storelocation = Point.fromLngLat(Stores.latitude, Stores.longitude)
Userlocation = Point.fromLngLat(UserLocation.Latitude, UserLocation.Longitude)
Distance = TurfMeasurement.distance(Storelocation, Userlocation, TurfConstants.UNIT_KILOMETERS)

但问题是上面的这个方法不计算路线内的距离,它只是计算从点到点的直线例如在谷歌地图距离是 9 公里,但是使用上面的这种方法,距离是 6 公里

private fun getRout()
        NavigationRoute.builder(this)
            .accessToken(Mapbox.getAccessToken()!!)
            .origin(Userlocation)
            .destination(Storelocation).build().getRoute(object :Callback<DirectionsResponse> 
                override fun onResponse(call: Call<DirectionsResponse>, response: Response<DirectionsResponse>) 
                    val rout = response ?: return
                    val body = rout.body() ?: return
                    if (body.routes().count() == 0 )
                        return
                    
                    navigationMapRoute = NavigationMapRoute(null, mapView, map)
                    // Get Distance
                    Distance = ??

                

                override fun onFailure(call: Call<DirectionsResponse>, t: Throwable) 

                
            )
    

【问题讨论】:

【参考方案1】:

而不是这个:

navigationMapRoute = NavigationMapRoute(null, mapView, map)
                // Get Distance
                Distance = ??

这样做:

val route = response.body().routes().get(0)
val distance = route.distance()

【讨论】:

因为这个答案是正确的,所以我会接受它作为答案,我只是很久以前就知道了,但是感谢任何方式都比未回答的问题更好

以上是关于如何使用 Mapbox Kotlin 计算两个坐标之间的距离的主要内容,如果未能解决你的问题,请参考以下文章

如何从 mapbox 解决 Surface API 中的 CORS 问题?

如何在 Mapbox iOS 中的特定坐标上放置自定义注释的底部

创建自定义地图叠加层(折线)[Mapbox]

点击 Mapbox GL JS 显示 Lat Lng 坐标

iOS 中的 Mapbox 导航和我的 mapView 控制器

如何在 iOS 上从 Mapbox 解码“编码折线”