菜鸟教程小白 发表于 2022-12-12 14:25:37

ios - 如何从 GPX 文件实例化 NMARoute 对象


                                            <p><p>我们正在使用 iOS Premium HereMaps SDK。我们的基本问题是如何从一个非常详细的 GPX 文件中实例化一个 <code>NMARoute</code> 对象。此对象应用于自定义逐向导航。目前我们采取以下步骤:</p>

<ol>
<li>从 GPX 文件中创建一个 <code>NMAGeoCoordinates</code> 对象数组</li>
<li>创建一个 <code>NMAWaypoint</code>s</li> 数组
<li>调用<code></code></li>
</ol>

<p>不幸的是,我们面临着多重限制:</p>

<ul>
<li><code></code> 方法限制了路点的数量。虽然我们有一个足够详细的 GPX 文件来创建整个路线,但我们必须挑选航路点并让 here 服务再次计算路线。这个过程并不能确保我们能准确地得到 GPX 文件中的路线。</li>
<li>NMAWaypoints 会在每次到达航路点时在转弯导航期间发出“您已到达中途停留地”的语音调用。我们知道可以使用 <code>NMAVIaWaypoint</code> 作为类型,但这不适合我们,因为 <code>NMAVIaWaypoint</code> 将在导航期间发生的重新路由过程中被解除。此外,中途停留会导致导航中断,例如在显示的距离内。</li>
<li>对于位于十字路口中间的某些 GPS 点,HereMaps 路线计算有时会选择与预期不同的路线。这又是由于 HereMaps 想要自己计算路线的问题,尽管我们有一个包含路线的详细 GPX 文件。</li>
</ul>

<p>我们真正在寻找的是从 GPX 文件中获取 <code>NMARoute</code> 对象的更好方法。令我们惊讶的是,有一个 <a href="https://developer.here.com/api-explorer/rest/locations_data_to_route/match-gpx-data-to-a-route" rel="noreferrer noopener nofollow">REST endpoint</a>由 HereMaps SDK 提供,用于将 GPX 文件转换为 json 数据,但遗憾的是无法将此数据输入 iOS SDK。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>遗憾的是,这不适用于当前的 HERE iOS SDK。 TbT Navigation 和路由之间存在紧密耦合,因此 Navigation 目前只能与内部路由引擎配合使用。 </p>

<p>一些背景:</p>

<p>想象一下,您在导航时从预先计算的 route 得出(甚至可能在您没有得出时发生,例如由于 GPS 跳跃、复杂情况下的错误 map 匹配、暂时丢失信号(如果您从未映射或私有(private)开始)路网等)导航将要求重新计算路由。如果您的 GPX 轨迹与基于 iOS MobileSDK 的应用程序中的道路网络和 map 数据不匹配怎么办?所以你的踪迹告诉指导开车去某个地方,那里没有路了?指导将拒绝并强制重新计算。在你的情况下,你很可能不想要交通优化导航,但是如何处理阻塞的道路(所以不仅仅是缓慢的自由流动速度,而是完全阻塞)?我建议在此处启用优化 - 但这也不适用于静态 GPX 跟踪。</p>

<p>正如您已经说过的,更好的解决方案是在本地重新计算一条非常接近您的轨迹的路线,但会考虑本地 map 数据和约束。 </p>

<p>你提到的限制是正确的,但是:</p>

<ul>
<li>现已在 SDK 3.6 中完全移除 Waypoint 限制。但仍请注意航路点的数量,尤其是这些航路点之间的数字 > 500 和复杂路段。</li>
<li>您是否尝试使用 NMAAudioManager 委托(delegate)来拦截音频输出? <a href="https://developer.here.com/documentation/ios-premium/topics_api_nlp_hybrid_plus/protocolnmaaudiomanagerdelegate-p.html#topic-apiref" rel="noreferrer noopener nofollow">https://developer.here.com/documentation/ios-premium/topics_api_nlp_hybrid_plus/protocolnmaaudiomanagerdelegate-p.html#topic-apiref</a> </li>
<li>如上所述,路由派生的原因有很多。有时是由于 map 数据,有时是由于计算包含。 100% 重建可能很棘手(有时您可能对 GPX 跟踪是正确的,但在某些情况下 HERE SDK 可能是正确的),因此请尝试使用航点的数量和路由选项以尽可能接近。</li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何从 GPX 文件实例化 NMARoute 对象,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/48185886/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/48185886/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何从 GPX 文件实例化 NMARoute 对象