IOS的一些导航问题

1.获取导航路线信息

// 根据两个地标,向苹果服务器请求对应的行走路线信息
func getRouteMessage(startCLPL: CLPlacemark, endCLPL: CLPlacemark) {
        // 请求导航路线数据信息
        let request: MKDirectionsRequest = MKDirectionsRequest()
        
        // 创建起点和终点
        let sourceMKPL: MKPlacemark = MKPlacemark(placemark: startCLPL)
        request.source = MKMapItem(placemark: sourceMKPL)
        
        
        
        let endMKPL: MKPlacemark = MKPlacemark(placemark: endCLPL)
        request.destination = MKMapItem(placemark: endMKPL)
        
        
        // 创建导航对象
        let directions: MKDirections = MKDirections(request: request)
        
        
        // 调用一个方法, 开始发送请求
        directions.calculateDirectionsWithCompletionHandler { (response: MKDirectionsResponse?, error: NSError?) -> Void in
            if error == nil {
                print(response)
                  //MKDirectionsResponse
                  //routes: [MKRoute]
                
                
                // MKRoute
                // name: 路线名称
                // advisoryNotices: [String] : 提示信息
                // distance: CLLocationDistance 长度
                // expectedTravelTime: NSTimeInterval: 预计到达时间段
                // transportType : 行走方式(步行, 驾驶, 公交)
                // polyline: MKPolyline: 导航路线对应的数据模型
                // steps: [MKRouteStep]: 每一步该怎么走
                
                // MKRouteStep
                // instructions: String : 行走提示: 前方路口左转
                // notice: 警告信息
                // distance : 每一节路线的长度距离
                // transportType: 每一路的交通方式
                for route in (response?.routes)! {
                    
                    // MKRoute
                    
                    print(route.advisoryNotices)
                    print(route.name, route.distance, route.expectedTravelTime)
                    
                    // 添加覆盖层数据模型
                    // 当我们添加一个覆盖层数据模型时, 系统绘自动查找对应的代理方法, 找到对应的覆盖层"视图"
                    self.mapView.addOverlay(route.polyline)
                    
                    for step in route.steps {
                        // MKRouteStep
                        print(step.instructions)
                        
                    }
                    
                }
            }
        }

    }

extension ViewController: MKMapViewDelegate {
    
    /**
     当添加一个覆盖层数据模型到地图上时, 地图会调用这个方法, 查找对应的覆盖层"视图"(渲染图层)
     
     - parameter mapView: ditu
     - parameter overlay: 覆盖层"数据模型"
     
     - returns: 覆盖层视图
     */
    func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
        
        // 不同的覆盖层数据模型, 对应不同的覆盖层视图来显示
        let render: MKPolylineRenderer = MKPolylineRenderer(overlay: overlay)
        
        // 设置线宽
        render.lineWidth = 1
        // 设置颜色
        render.strokeColor = UIColor.yellowColor()
        return render
    }
}

你可能感兴趣的:(IOS的一些导航问题)