苹果系统本身自带一个地图APP,但是功能并不是很强大,但是一些简单的导航功能还是能做出来的,下面贴上我的代码

//
// ViewController.m
// 系统APP导航
//
// Created by 张秀清 on 15/5/4.
// Copyright (c) 2015年 张秀清. All rights reserved.
// #import "ViewController.h" #import <MapKit/MapKit.h> @interface ViewController ()
/**
* 输入起点
*/
@property (nonatomic,strong) UITextField *startTF;
/**
* 输入终点
*/
@property (nonatomic,strong) UITextField *endTF;
/**
* 开始导航按钮
*/
@property (nonatomic,strong) UIButton *navigateButton;
/**
* 地理编码器
*/
@property (nonatomic,strong) CLGeocoder *geocoder; @end @implementation ViewController #pragma mark - 懒加载
-(CLGeocoder *)geocoder{ if (!_geocoder) {
_geocoder = [[CLGeocoder alloc]init];
}
return _geocoder;
} - (void)viewDidLoad {
[super viewDidLoad]; [self initUI];
} #pragma mark - 初始化UI
-(void)initUI{ _startTF = [[UITextField alloc]initWithFrame:CGRectMake(50, 100, 150, 50)];
_startTF.borderStyle = UITextBorderStyleRoundedRect;
_startTF.placeholder = @"begin";
[self.view addSubview:_startTF]; _endTF = [[UITextField alloc]initWithFrame:CGRectMake(50, 150, 150, 50)];
_endTF.borderStyle = UITextBorderStyleRoundedRect;
_endTF.placeholder = @"end";
[self.view addSubview:_endTF]; _navigateButton = [UIButton buttonWithType:UIButtonTypeSystem];
_navigateButton.frame = CGRectMake(50, 200, 100, 50);
[_navigateButton setTitle:@"start" forState:UIControlStateNormal];
[_navigateButton addTarget:self action:@selector(startNavigation) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_navigateButton];
} #pragma mark - 开始导航
-(void)startNavigation{ [self.geocoder geocodeAddressString:self.startTF.text completionHandler:^(NSArray *placemarks, NSError *error) { /**
* 获取初始位置信息
*/
if (placemarks.count == 0) {
return ;
}
CLPlacemark *startCLPlacemark = [placemarks lastObject]; [self.geocoder geocodeAddressString:self.endTF.text completionHandler:^(NSArray *placemarks, NSError *error) {
/**
* 获取终点位置信息
*/
if (placemarks.count == 0) {
return ;
}
CLPlacemark *endCLPlacemark = [placemarks lastObject]; //开始导航
[self navigateWithStartCLPlacemark:startCLPlacemark endCLPlacemark:endCLPlacemark];
}]; }];
} //开始导航
-(void)navigateWithStartCLPlacemark:(CLPlacemark *)startCLPlacemark endCLPlacemark:(CLPlacemark *)endCLPlacemark{ MKPlacemark *startMKPlacemark = [[MKPlacemark alloc]initWithPlacemark:startCLPlacemark];
MKPlacemark *endMKPlacemark = [[MKPlacemark alloc]initWithPlacemark:endCLPlacemark]; MKMapItem *startItem = [[MKMapItem alloc]initWithPlacemark:startMKPlacemark];
MKMapItem *endItem = [[MKMapItem alloc]initWithPlacemark:endMKPlacemark]; NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[MKLaunchOptionsMapTypeKey] = @(MKMapTypeStandard);//地图模式
dict[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving;//导航模式(走路/开车) [MKMapItem openMapsWithItems:@[startItem,endItem] launchOptions:dict];//打开系统地图开始导航 }
@end

利用系统APP实现导航---By张秀清的更多相关文章

  1. 导航 - 利用系统自带的App导航

    导航: 可以将需要导航位置丢给系统自带的App进行导航 发送网络请求到公司服务器, 获取导航数据, 自己手动绘制导航 利用三方SDK进行导航(百度) #import "ViewControl ...

  2. (八十一)利用系统自带App来实现导航

    利用系统的地图App进行导航,只需要传入起点和终点.启动参数,调用MKMapItem的类方法openMapWithItems:launchOptions:来实现定位,调用此方法后会打开系统的地图App ...

  3. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  4. 精品干货丨APP常用导航框架

    文章目的:在整体上把握移动端App的导航框架,理解每种导航所具有的优点.局限性和其所适用的范围. 文章用心:典型APP案例(源码:http://www.jinhusns.com/Products/Do ...

  5. iOS系统app崩溃日志手动符号化

    iOS系统app崩溃日志手动符号化步骤: 1.在桌面建立一个crash文件夹,将symbolicatecrash工具..crash文件..dSYM文件放到该文件夹中 a.如何查询symbolicate ...

  6. 报课系统APP

    031302307黄丰润 031302343张晓燕 #NABCD模型分析 合理分析需求有助于说服客户,所以我们有如下分析 N(need)--客户需要什么 负责人需要将选课信息和选课表格一起发送给所负责 ...

  7. 获取设备上全部系统app信息

    在获取android设备的全部程序信息一文中介绍了获取手机上全部app信息的方法,以下介绍过滤掉系统app的方法: MainActivity: package com.home.getsysapp; ...

  8. 你我公益模式系统APP开发

    你我公益模式系统APP开发(微or电 158.1500.1390 小凡团队)你我公益系统开发,你我公益系统模式定制,你我公益系统开发软件,你我公益平台系统开发. 互联网世界无边无界,互联网创业者应敢于 ...

  9. 消费创富会开发模式系统App

    消费创富会系统定制开发,消费创富会网页开发模式,消费创富会开发软件,消费创富会系统APP开发,消费创富会平台模式开发,专业开发微信商城分销.公排.全返.分红.互助等模式定制开发,APP.网页版.微信端 ...

随机推荐

  1. k8s污点

    https://www.iyunw.cn/archives/k8s-wu-dian-shi-yong-fang-fa-shi-li/ kubectl taint nodes node1 key=val ...

  2. K210,yolo,face_mask口罩检测模型训练及其在K210,kd233上部署

    前段时间考研,再加上工作,时间很紧,一直没有更新博客,这几天在搞k210的目标检测模型,做个记录,遇到问题可以添加qq522414928或添加微信13473465975,共同学习 首先附上github ...

  3. 初识python: 继承实例 - 学校、老师、学生

    对学校.老师.学生做一个分类,并抽象成类.并实现各自的一些功能.代码如下: 父类1:学校 # 学校 class School(object): def __init__(self,name,addr) ...

  4. Python + Selenium 上传元素为button类型的文件的解决办法

    工具:winspy Python所需安装模块:pywin32 (安装语句:pip install -i https://pypi.douban.com/simple pywin32) 元素位置: 对应 ...

  5. git 忽略本地文件的修改

    项目开发过程中,会遇到本地配置文件每个开发人员不同的情况,但如果遇到类似数据库配置这种最终需要加入 git 版本控制的配置,则会陷入两难境地.要么不跟踪,要么有人提交后其他人同步下来必须手动修改,非常 ...

  6. ajax 异步 提交 含文件的表单

    1.前言 需求是使用 jquery 的 ajax 异步提交表单,当然,不是简单的数据,而是包含文件数据的表单.于是我想到了 new FormData() 的用法, 可是仍然提交失败,原来是ajax的属 ...

  7. 第10组 Beta冲刺 (4/5)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客: https://www.cnblogs.com/cpandbb/p/14018650.html ·作业博客:https://edu.cnblogs.c ...

  8. 输出前 n 个Fibonacci数

    本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内.Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如 ...

  9. Solon Web 开发,五、数据访问、事务与缓存应用

    Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...

  10. 【机器学习】kNN

    机器学习算法--kNN 目录 机器学习算法--kNN 1. 算法原理 2. 算法实现 2.1 kd-tree构造 2.2 kd-tree查询 2.3 kNN算法实现 3. 算法测试 Ref 1. 算法 ...