【问题标题】:How to detect I'm near a waypoint如何检测我在航点附近
【发布时间】:2018-02-06 22:24:18
【问题描述】:

我想使用 mapbox-android SDK 在 Android (Kotlin) 上制作一个导航应用程序。我需要创建一条带有特定航点的路线,并想知道我何时靠近这些航点之一(例如之前 200m)。我已经设法使用 NavigationRoute 对象显示带有我的航点的地图,并使用 NavigationLauncher 对象启动逐向导航。不过,我不知道如何知道我何时接近航路点。我已经阅读了有关里程碑事件侦听器(步骤或路线)、RouteProgress(腿或路线)的内容,但我不知道这是否是正确的方法。

我尝试使用 STEP_DISTANCE_REMAINING_METERS 声明里程碑并添加 MilestoneEventListener,但我的日志中没有任何内容。就像我说的,我什至不知道这样做是否正确。

val milestone = RouteMilestone.Builder()
        .setIdentifier(100)
        .setTrigger(Trigger.all(
                Trigger.lt(TriggerProperty.STEP_DISTANCE_REMAINING_METERS, 200)
        ))
        .build()

navigation = MapboxNavigation(this@MainActivity, Mapbox.getAccessToken())
navigation.addMilestone(milestone)

navigation.addMilestoneEventListener { _, _, milestone ->
    Log.d(TAG, "milestone triggered: " + milestone.instruction)
}

navigationMapRoute = NavigationMapRoute(navigation, mapView, map, R.style.NavigationMapRoute)
navigationMapRoute!!.addRoute(currentRoute)

我正在使用这些版本的 mapbox SDK

  • mapbox-android-sdk:5.3.2
  • mapbox-android-navigation:0.9.0
  • mapbox-android-navigation-ui:0.9.0

【问题讨论】:

  • 只计算到航点的距离。
  • 这是“mapbox”的方式,还是你提供了一个解决方法/解决方案,因为在导航 SDK 中无法使用里程碑或任何其他东西来做到这一点?
  • 你为什么要让其他人在自己计算距离如此简单的情况下做这些事情?代码在互联网上无处不在。我对mapbox一无所知。
  • 是的,你是对的,但是 mapbox SDK 还提供了一个带有“剩余距离”(mapbox.com/android-docs/navigation/overview/milestones)的“剩余时间”事件,根据我的测试结果,我可能会切换到时间剩余而不是距离。如果我想切换到时间,我想我会尝试自定义实现距离并挖掘 SDK。
  • 嗨,Sébastien,您是否记得这已解决?我目前正在研究如何做同样的事情,但 Mapbox 文档在这方面很少见。

标签: android kotlin mapbox mapbox-android turn-by-turn


【解决方案1】:

如果您知道航点的位置,您可以使用Location Manager's Proximity Alert

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2014-02-14
    相关资源
    最近更新 更多