获取导航路线信息
1. 实现须知
- 获取导航路线, 需要向苹果服务器发送网络请求
- 记住关键对象MKDirections
2.代码实现
// 根据两个地标,向苹果服务器请求对应的行走路线信息
- (void)directionsWithBeginPlackmark:(CLPlacemark *)beginP andEndPlacemark:(CLPlacemark *)endP
{
// 创建请求
MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
// 设置开始地标
MKPlacemark *beginMP = [[MKPlacemark alloc] initWithPlacemark:beginP];
request.source = [[MKMapItem alloc] initWithPlacemark:beginMP];
// 设置结束地标
MKPlacemark *endMP = [[MKPlacemark alloc] initWithPlacemark:endP];
request.destination = [[MKMapItem alloc] initWithPlacemark:endMP];
// 根据请求,获取实际路线信息
MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) {
[response.routes enumerateObjectsUsingBlock:^(MKRoute * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@--", obj.name);
[obj.steps enumerateObjectsUsingBlock:^(MKRouteStep * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@", obj.instructions);
}];
}];
}];
}
3. 导航路线对象详解
/**
MKDirectionsResponse对象解析
source :开始位置
destination :结束位置
routes : 路线信息 (MKRoute对象)
MKRoute对象解析
name : 路的名称
advisoryNotices : 注意警告信息
distance : 路线长度(实际物理距离,单位是m)
polyline : 路线对应的在地图上的几何线路(由很多点组成,可绘制在地图上)
steps : 多个行走步骤组成的数组(例如“前方路口左转”,“保持直行”等等, MKRouteStep 对象)
MKRouteStep对象解析
instructions : 步骤说明(例如“前方路口左转”,“保持直行”等等)
transportType : 通过方式(驾车,步行等)
polyline : 路线对应的在地图上的几何线路(由很多点组成,可绘制在地图上)
注意:
MKRoute是一整条长路;MKRouteStep是这条长路中的每一截;
*/
4. 测试环境
1. 请求路线数据需要联网
2. XCode版本不限
3. iOS系统版本不限
5. 常见问题总结
1. 类太多, 不方便记忆,怎么处理
此功能不常用, 只需要知道有这一个功能. 如果到时用到, 直接回过头来找代码;