设为首页 加入收藏

TOP

【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)(一)
2017-10-11 18:36:24 】 浏览:5097
Tags:iOS 7.4定位 服务 -> 3.2 地图 框架 MapKit 功能 路线 规划 导航

本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。


本文相关目录:
================== 所属文集:【iOS】07 设备工具 ==================
7.4 定位服务->1.0 简介
7.4 定位服务->2.1.1 定位 - 官方框架CoreLocation: 请求用户授权
7.4 定位服务->2.1.2 定位 - 官方框架CoreLocation: CLLocationManager位置管理器
7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位
7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码
7.4 定位服务->2.1.3.3 定位 - 官方框架CoreLocation 功能3:区域监听
7.4 定位服务->2.1.4 定位 - 官方框架CoreLocation 案例:指南针效果
7.4 定位服务->2.2 定位 - locationManager框架
7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示
7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)
7.4 定位服务->3.3 地图框架MapKit 功能3:3D视图
7.4 定位服务->3.4 地图框架MapKit 功能4:地图截图
7.4 定位服务->3.5 地图框架MapKit 功能5:POI检索
================== 所属文集:【iOS】07 设备工具 ==================


地图框架 - MapKit目录:

本文目录:


1.0 概念


2.0 导航的3种实现方案

2.1 方案1:使用系统APP导航

代码16:使用系统APP导航 Demo

编译环境:Xcode 8.0
模拟器版本:iOS 10
Swift版本:3.0

【OC 语言】
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

@interface ViewController ()
@property (nonatomic, strong) CLGeocoder *geoCoder;
@end

@implementation ViewController

-(CLGeocoder *)geoCoder{
    if (!_geoCoder) {
        _geoCoder = [[CLGeocoder alloc] init];
    }
    return _geoCoder;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    // 导航包括:起点和终点  数据由苹果处理
    [self.geoCoder geocodeAddressString:@"广州" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        
        // 1. 拿到广州地标对象
        CLPlacemark *gzP = [placemarks firstObject];
        
        [self.geoCoder geocodeAddressString:@"上海" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
            
            // 2. 拿到上海地标对象
            CLPlacemark *shP = [placemarks firstObject];
            
            // 3. 调用开始导航的方法(从广州到上海)
            [self directionsWithBeginPlackmark:gzP andEndPlacemark:shP];
        }];
    }];
}

#pragma mark - 开始导航
// 根据两个地标,向苹果服务器请求对应的行走路线信息
- (void)directionsWithBeginPlackmark:(CLPlacemark *)startPLCL andEndPlacemark:(CLPlacemark *)endPLCL{
    
    // 创建起点:根据 CLPlacemark 地标对象创建 MKPlacemark 地标对象
    MKPlacemark *startplMK = [[MKPlacemark alloc] initWithPlacemark:startPLCL];
    MKMapItem *startItem = [[MKMapItem alloc] initWithPlacemark:startplMK];
    
    // 创建终点:根据 CLPlacemark 地标对象创建 MKPlacemark 地标对象
    MKPlacemark *endplMK = [[MKPlacemark alloc] initWithPlacemark:endPLCL];
    MKMapItem *endItem = [[MKMapItem alloc] initWithPlacemark:endplMK];
    
    // 设置导航地图启动项参数字典
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【代码笔记】iOS-cell自动变化大小 下一篇iOS scene之间的跳转类型——Segue

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目