ios - 不能在 NMACoreRouter 上使用循环(swift)(HereMap SDK)
问题描述
我有一个问题,我不能在 NMACoreRouter (HereMap SDK) 上使用 for 循环如果我按操作执行一次,它仍然可以工作!我不知道为什么不能应用到循环中。有趣的是,错误在第二个循环中仅返回“NMARoutingError”
这是我的代码
//route
var coreRouter: NMACoreRouter!
var mapRoute: NMAMapRoute?
typealias RouteContainer = (plan: [NMAGeoCoordinates], mode: NMARoutingMode)
for var shop in pickedShopData {
self.calculateRouteLength(startLat: self.curentUserGeo.latitude, startLong: self.curentUserGeo.longitude, endLat: shop.shopLat, endLong: shop.shopLong)
}
func calculateRouteLength(startLat: Double, startLong: Double, endLat: Double, endLong: Double) {
coreRouter = NMACoreRouter()
/* Define waypoints for the route */
let startPoint = NMAGeoCoordinates(latitude: startLat, longitude: startLong)
let endPoint = NMAGeoCoordinates(latitude: endLat, longitude: endLong)
/* Initialize a RoutePlan */
let routePlan = [startPoint, endPoint]
/*
* Initialize a RouteOption. HERE Mobile SDK allows users to define their own parameters for the
* route calculation,including transport modes,route types and route restrictions etc.Please
* refer to API doc for full list of APIs
*/
let routeMode = NMARoutingMode()
/* Other transport modes are also available e.g Pedestrian */
routeMode.transportMode = NMATransportMode.scooter
/* Disable highway in this route. */
routeMode.routingOptions.insert(NMARoutingOption.avoidHighway)
/* Calculate the shortest route available. */
routeMode.routingType = NMARoutingType.fastest
/* Calculate 1 route. */
routeMode.resultLimit = 3
coreRouter.calculateRoute(withStops: routePlan, routingMode: routeMode,
{ [self] (result, error) in
// check error and unwrap route
guard let route = result?.routes?.first, error == NMARoutingError.none else {
print("error \(error)")
return
}
// check if map object already exist
if let tempMapRoute = self.mapRoute {
self.mapView?.remove(mapObject: tempMapRoute)
}
// create map object from route
guard let mapRoute = NMAMapRoute(route) else {
return
}
print("distance \(mapRoute.route.length)")
})
}
解决方案
我认为您的问题是 NMACoreRouter 在第二条路线启动时仍在计算第一条路线。
检查 NMACoreRouter.isBusy 以确保路由器已完成计算,直到您开始下一个。
-卡琳
推荐阅读
- r - 在 Rstudio 中使用 rvest 抓取时,我得到了与网络上不同的 html 文本
- android - Kotlin 应用程序在创建数据库后崩溃,仅在首次运行时无法写入数据库文件(锁定)
- python - 尝试调用 google-api oauth2 时请求缺少所需的身份验证凭据
- dialogflow-cx - Dialogflow CX 代理中的文本转语音设置
- facebook - 如何获取 Facebook 主页的官方二维码?
- amazon-web-services - 通过启用 IRSA,我是否仅限于每个帐户运行 100 个 EKS 集群?
- c# - 是否可以在 HotChocolate 中创建通用数据加载器?
- python - Matplotlib 绘图函数在 conda 基本环境中挂起
- javascript - 等待函数完成做其他事情 node.js 强大
- sql - 创建新表时添加外键