苹果系统本身自带一个地图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. .NET 云原生架构师训练营(设计原则&&设计模式)--学习笔记

    目录 设计原则 设计模式 设计原则 DRY (Don't repeat yourself 不要重复) KISS (Keep it stupid simple 简单到傻子都能看懂) YAGNI (You ...

  2. JSP请求响应流程入门介绍

    一个完整的jsp请求响应流程可以简单的使用下图表示: 过滤器:直观的了解,就是对请求做一个过滤作用,比如身份验证,验证不通过的不让他继续往下走 Servlet:请求处理中心,这个也是我们写业务逻辑的地 ...

  3. SQL高级优化系列

    目录 SQL高级优化系列(一)之MySQL优化 SQL高级优化系列(二)之MySQL架构 SQL高级优化系列(三)之存储引擎 SQL高级优化系列(四)之SQL优化 SQL高级优化系列(五)之执行计划 ...

  4. LINUX学习-Nginx服务器的反向代理和负载均衡

    一.准备环境 1.准备3台服务器: 1)192.168.88.10 --Nginx服务器 2)192.168.88.20 --apache服务器 3)192.168.88.30 --apache服务器 ...

  5. HIVE优化学习笔记

    概述 之前写过关于hive的已经有两篇随笔了,但是作者依然还是一枚小白,现在把那些杂七杂八的总结一下,供以后查阅和总结.今天的文章介绍一下hive的优化.hive是好多公司都在使用的东西,也有好多大公 ...

  6. 浅谈xss漏洞

    0x00 xss漏洞简介 XSS漏洞是Web应用程序中最常见的漏洞之一.如果您的站点没有预防XSS漏洞的固定方法, 那么很可能就存在XSS漏洞. 跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Scr ...

  7. 用Win +R运行快速启动各种程序

    许多人认为Windows的Win+R运行就是摆设,除了开cmd和shutdown外毫无用处.其实Win+R是可以用于各种快捷启动的. Win+R可以视作执行一条cmd命令,要用他运行程序,理论上必须输 ...

  8. 2022年最新黑苹果monterey安装efi分享

    最新版本monterey 12.1 安装. 配置: 名称 型号 备注 主板 Gigabyte Z490M Gaming X   内存 威刚万紫千红DDR4 2666 16G x 2 两条16G  插2 ...

  9. Servlet-请求转发

    Servlet-请求转发 请求转发:服务器收到请求后,从一个资源跳转到另一个资源的操作叫请求转发 请求转发特点: 1,浏览器地址栏没有变化 2,他们是一次请求 3,他们共享Request域中的数据 4 ...

  10. linux如何复制文件

    目录 一:复制文件 二:文件详细属性 一:复制文件 copy的缩写cp. 格式: cp [参数] [被复制文件的路径] [复制到的新路径] 参数: -r : 递归复制 -a : 保证某些属性不变 案列 ...