苹果系统本身自带一个地图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. Spring进一步学习

    目录 1.beans.xml编写 2.别名 (1)alias (2)name 3.依赖注入(DI) (1)数组注入 (2)List注入 (3)Map注入 (4)set注入 (5)Null注入 (6)p ...

  2. OAuth2.0的定义

    1. 什么是OAuth2.0 * 用于REST/APIs的代理授权框架(delegated authorization) * 基于令牌Token的授权,在无需暴露用户密码的情况下,使应用能获取对用户数 ...

  3. [学习笔记] IT项目管理 - 挣值管理(EVM)

    挣值管理(EVM) 挣值管理(Earned Value Management, EVM)是成本管理里面较为重点的知识点,但是也可以用来综合考察项目范围.进度和成本绩效,经常需要做相关计算. 基本概念P ...

  4. 『无为则无心』Python函数 — 33、高阶函数

    目录 1.高阶函数的定义 2.体验高阶函数 3.内置高阶函数 (1)map()函数 (2)reduce()函数 (3)filter()函数 1.高阶函数的定义 把函数作为参数传入(把一个函数作为另外一 ...

  5. vue - public 引入 <script>报错 Uncaught SyntaxError: Unexpected token '<'

    1.现象 原本我是直接在母版引入 <script type="application/javascript" src="static/config.js" ...

  6. Spring循环依赖原理

    Spring循环依赖的原理解析 1.什么是循环依赖? ​ 我们使用Spring的时候,在一个对象中注入另一个对象,但是另外的一个对象中也包含该对象.如图: 在Student中包含了teacher的一个 ...

  7. 服务器表单字符串转化Vue表单挂在到对应DOM节点

    今天在项目开发中,遇到从后端返回的vue文件(包含template,js,css)的文件,试过用v-html解析文件,渲染到页面,但是无法渲染,后来去查了一堆资料,自己写了一个全局方法来解析这类文件 ...

  8. 【记录一个问题】android下opencl中的event.getProfilingInfo()测速时间并不准确

    使用了类似的代码来做android下opencl的时间测试: cl::CommandQueue queue(context, devices[0], CL_QUEUE_PROFILING_ENABLE ...

  9. spring事务隔离级别、传播机制以及简单配置

    转自 https://blog.csdn.net/zht741322694/article/details/78676964 一.spring支持的事务声明方式1.  编程式事务  当系统需要明确的, ...

  10. golang中的标准库反射

    反射 反射是指程序在运行期对程序本身访问和修改的能力 变量的内在机制 变量包含类型信息和值信息 var arr [10]int arr[0] = 10 类型信息:是静态的元信息,是预先定义好的 值信息 ...