#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()
/** 地理编码 */
@property (nonatomic, strong) CLGeocoder *geoC;
@end
@implementation ViewController
#pragma mark -懒加载
-(CLGeocoder *)geoC
{
if (!_geoC) {
_geoC = [[CLGeocoder alloc] init];
}
return _geoC;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self.geoC geocodeAddressString:@"广州" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
// 广州地标
CLPlacemark *gzPL = [placemarks firstObject];
[self.geoC geocodeAddressString:@"上海" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
// 上海地标
CLPlacemark *shPL = [placemarks firstObject];
[self getRouteWithBeginPL:gzPL endPL:shPL];
}];
}];
}
- (void)getRouteWithBeginPL:(CLPlacemark *)beginPL endPL:(CLPlacemark *)endPL
{
// 请求导航路线信息
// 创建一个获取导航路线信息的请求
MKDirectionsRequest *reqeust = [[MKDirectionsRequest alloc] init];
// 设置起点和终点
CLPlacemark *sourceCLPL = beginPL;
MKPlacemark *sourcePL = [[MKPlacemark alloc] initWithPlacemark:sourceCLPL];
MKMapItem *sourceItem = [[MKMapItem alloc] initWithPlacemark:sourcePL];
reqeust.source = sourceItem;
// 设置终点
// 终点
CLPlacemark *destCLPL = endPL;
MKPlacemark *destPL = [[MKPlacemark alloc] initWithPlacemark:destCLPL];
MKMapItem *destItem = [[MKMapItem alloc] initWithPlacemark:destPL];
reqeust.destination = destItem;
// 创建一个请求导航路线的对象
MKDirections *directions = [[MKDirections alloc] initWithRequest:reqeust];
// 发起请求,获取导航路线
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error)
{
// 获取路线信息成功
if (error == nil) {
/**
* MKDirectionsResponse : 路线响应对象
* routes : 所有的路线 <MKRoute 路线对象>
*/
/**
* MKRoute
* name : 路线名称
* advisoryNotices : 警告提示信息
* distance : 距离
* expectedTravelTime : 预期时间
* transportType : 通过方式
* polyline : 几何路线对应的路线数据模型
* steps : 每一步怎么走
*/
/**
* MKRouteStep
* instructions : 行走介绍
* notice : 警告信息
* polyline : 每一节路线对应的数据模型
* distance : 距离
* transportType : 通过方式
*/
[response.routes enumerateObjectsUsingBlock:^(MKRoute * _Nonnull route, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"路线名称:%@---距离--%f", route.name, route.distance);
[route.steps enumerateObjectsUsingBlock:^(MKRouteStep * _Nonnull step, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@", step.instructions);
}];
}];
}
}];
}
@end
iOS 获取导航路线信息(MapKit框架)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- /** @title: iOS利用HealthKit框架从健康app中获取步数信息 1.第一步首先需要开启Heal...