0

我遵循这个例子:turn-by-turn-navigation-ios-swift

这就是我的更新地图功能的样子:

 private func updateMapRoute(with route: NMARoute!) {
        // remove previously created map route from map
        if let previousMapRoute = mapRoute {
            mapView.remove(mapObject:previousMapRoute)
            
        }
        
        guard let unwrappedRoute = route else {
            return
        }
        
        mapRoute = NMAMapRoute(unwrappedRoute)
        mapRoute?.traveledColor = .clear
        _ = mapRoute.map{ mapView?.add(mapObject: $0) }
        
        // In order to see the entire route, we orientate the
        // map view accordingly
        if let boundingBox = unwrappedRoute.boundingBox {
            geoBoundingBox = boundingBox
            mapView.set(boundingBox: boundingBox, animation: .linear)
        }
    }

然而,previos 路线并未从地图中删除。

mapRoute 变量定义如下:private var mapRoute : NMAMapRoute!

我在忽略什么吗?先感谢您!BR。

在此处输入图像描述

4

2 回答 2

2

实际上,在您的情况下,它正在失去对 MapRoute 的引用。您需要将先前的 NMARoute 保存在一个对象中,并使用该 NMARoute 获取 NMAMapRoute 以访问和删除先前的地图路线。

if let previousMapRoute = NMAMapRoute(previoudRoute) {
    mapView.remove(mapObject:previousMapRoute)       
}

用你的代码替换上面的代码,并将之前的路由保存在 previousRoute 对象中。

于 2020-07-16T05:07:44.677 回答
0

在创建新路线之前,您必须删除以前的路线。在调用这个函数之前添加这个

// remove previously created map route from map
   if let previousMapRoute = mapRoute {
      mapView.remove(mapObject:previousMapRoute)
   }
于 2020-07-04T06:59:46.440 回答