You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HERE API计算ETA未收到回调问题求助

解决HERE iOS SDK中NMACoreRouter计算路由无回调的问题

我之前也踩过一模一样的坑——调用calculateRoute后完全没反应,既没进回调,控制台也没错误输出,折腾半天才找到根源。咱们一步步来排查解决:

最常见的原因:核心路由器实例被提前释放

这是90%概率会碰到的问题:你代码里的coreRouter是局部变量,当calculateRoute所在的函数执行完毕后,这个局部变量会被系统销毁。而路由计算是异步操作,闭包默认对coreRouter是弱引用,实例销毁后回调自然永远不会触发。

解决方法:把coreRouter改成类的属性

在你的ViewController或者管理路由的类里,把coreRouter声明为实例属性,确保它能被持有到回调执行完成:

// 在类的顶部声明属性
var coreRouter: NMACoreRouter?

// 路由计算方法
func calculateETA() {
    let routeMode = NMARoutingMode()
    routeMode.transportMode = NMATransportMode.car
    routeMode.routingOptions.insert(NMARoutingOption.avoidHighway)
    routeMode.routingType = NMARoutingType.fastest
    routeMode.resultLimit = 1
    
    let startPoint = NMAGeoCoordinates(latitude: 52.562755700200796, longitude: 13.34599438123405)
    let endPoint = NMAGeoCoordinates(latitude: 52.520720371976495, longitude: 13.332345457747579)
    
    guard startPoint.isValid, endPoint.isValid else {
        print("坐标无效,请检查经纬度格式")
        return
    }
    
    let stops: [NMAGeoCoordinates] = [startPoint, endPoint]
    
    // 初始化类属性而非局部变量
    coreRouter = NMACoreRouter()
    coreRouter?.calculateRoute(withStops: stops, routingMode: routeMode) { (routeResult, error) in
        // 现在就能正常进入回调了
        if let error = error {
            print("路由计算出错:\(error.localizedDescription)")
            return
        }
        
        if let route = routeResult?.routes?.first {
            let etaMinutes = route.duration / 60
            print("预估到达时间:\(etaMinutes)分钟")
        } else {
            print("未找到可用路由")
        }
    }
}

其他需要排查的点

如果改了属性还是没反应,再检查这几个地方:

  • SDK初始化与API Key:确保HERE SDK已经用有效的API Key完成初始化,初始化失败的话所有SDK操作都会静默失效。可以加个检查:
    NMAApplicationContext.setApiKey("你的API Key")
    guard NMAApplicationContext.sharedInstance().isInitialized else {
        print("HERE SDK初始化失败,请检查API Key是否有效")
        return
    }
    
  • 路由参数兼容性:确认routingOptions和transportMode是否匹配,比如avoidHighway和car模式是兼容的,但如果设置了和当前交通方式冲突的选项,也可能导致无结果。

内容的提问来源于stack exchange,提问作者Akhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:49:47