iOS 学习笔记五 【2016年百度地图定位详细使用方法】
具体介和配置绍在此就不详述了,详情请看百度地图API文档,
在这里具体讲解下,新版百度地图的定位与反地理编码的使用:
1、导入头文件
#import <BaiduMapAPI_Map/BMKMapComponent.h> #import <BaiduMapAPI_Location/BMKLocationComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
2、设置代理
<
BMKLocationServiceDelegate,
BMKGeoCodeSearchDelegate
>
3、添加相关属性
@property (nonatomic, strong) BMKLocationService *locService; @property (nonatomic, strong) BMKGeoCodeSearch *geoCode; // 地理编码 @property (nonatomic, assign) CGFloat longitude; // 经度 @property (nonatomic, assign) CGFloat latitude; // 纬度
4、开始写代码了
- (void)viewDidLoad {
[super viewDidLoad];
[self startLocation];
}
- (void)startLocation
{
NSLog(@"进入普通定位态"); // 初始化BMKLocationService
_locService = [[BMKLocationService alloc]init];
_locService.delegate = self;
//启动LocationService
[_locService startUserLocationService];
} #pragma mark - CoreLocation 代理
#pragma mark 跟踪定位代理方法,每次位置发生变化即会执行(只要定位到相应位置)
//实现相关delegate 处理位置信息更新
//处理方向变更信息
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
NSLog(@"heading is %@",userLocation.heading);
} //处理位置坐标更新
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
NSLog(@"当前位置信息:didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude); self.longitude = userLocation.location.coordinate.longitude;
self.latitude = userLocation.location.coordinate.latitude; [self outputAdd];
// 当前位置信息:didUpdateUserLocation lat 23.001819,long 113.341650
} #pragma mark geoCode的Get方法,实现延时加载
- (BMKGeoCodeSearch *)geoCode
{
if (!_geoCode)
{
_geoCode = [[BMKGeoCodeSearch alloc] init];
_geoCode.delegate = self;
}
return _geoCode;
} //#pragma mark 获取地理位置按钮事件
- (void)outputAdd
{
// 初始化反地址编码选项(数据模型)
BMKReverseGeoCodeOption *option = [[BMKReverseGeoCodeOption alloc] init];
// 将数据传到反地址编码模型
option.reverseGeoPoint = CLLocationCoordinate2DMake(self.latitude, self.longitude);
NSLog(@"%f - %f", option.reverseGeoPoint.latitude, option.reverseGeoPoint.longitude);
// 调用反地址编码方法,让其在代理方法中输出
[self.geoCode reverseGeoCode:option];
} #pragma mark 代理方法返回反地理编码结果
- (void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
{
if (result) {
// self.address.text = [NSString stringWithFormat:@"%@", result.address];
NSLog(@"位置结果是:%@ - %@", result.address, result.addressDetail.city);
// NSLog(@"经纬度为:%@ 的位置结果是:%@", locationString, result.address);
self.currentCityString = result.addressDetail.city; [self.cityButton setTitle:self.currentCityString forState:UIControlStateNormal];
// 定位一次成功后就关闭定位
[_locService stopUserLocationService]; }else{
NSLog(@"%@", @"找不到相对应的位置");
} } #pragma mark 代理方法返回地理编码结果
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
{
if (result) {
NSString *locationString = [NSString stringWithFormat:@"经度为:%.2f 纬度为:%.2f", result.location.longitude, result.location.latitude];
NSLog(@"经纬度为:%@ 的位置结果是:%@", locationString, result.address);
// NSLog(@"%@", result.address);
}else{
// self.location.text = @"找不到相对应的位置";
NSLog(@"%@", @"找不到相对应的位置");
}
}
最后打印结果:
跟踪定位代理方法
当前位置信息:didUpdateUserLocation lat 23.001882,long 113.341635
2016-03-29 11:33:48.126 yrapp[5462:1995584] 23.001882 - 113.341635
代理方法返回地理编码结果
位置结果是:广东省广州市番禺区汉溪大道东 -
好了,新版百度地图API就这么简单,弄了半个小时才弄好,使用过程中如有问题,请联系本人
最新demo:详见:[『BABaseProject』](https://github.com/boai/BABaseProject)中的`tabbar 的 消息栏目
微博:@博爱1616
QQ:137361770
## 3、博爱极力推荐
序号 | 类库 | 简介及功能介绍
:----------- | :-----------: | :-----------
3.1 | [『BAButton』](https://github.com/boai/BAButton) | 完全实现 UIButton 的自定义的类库。pod 导入:`pod 'BAButton', '~> 1.0.1'`
3.2 | [pod安装和使用方法](http://www.cnblogs.com/boai/p/4977976.html) | 对pod还是不熟的同学,可以看下我的博客,是最新的pod安装和使用方法,一直更新!
3.3 | [『BASegmentControl』](https://github.com/boai/BASegmentControl) | 新增网易新闻的滑动SegmentControl,基于[『HMSegmentedControl』](https://github.com/HeshamMegid/HMSegmentedControl)的完美二次封装!
3.4 | [『BAReminderDemo』](https://github.com/boai/BAReminderDemo) | 系统提醒和日历提醒,最近做了一个预约功能,有用到系统提醒和日历提醒,就写了这个demo!
3.5 | [『BALocalNotification』](https://github.com/boai/BALocalNotification) | 本地通知最新完美封装,最近整理了下本地通知和极光推送,有很多坑都踩过了,刚刚整理出来的完美封装,肯定适合大部分场合,也可以用此封装写闹钟,也提醒事件,都可以!如果喜欢,请在git上点个星吧!
3.6 | [『BANetManager』](https://github.com/boai/BANetManager) | 基于[『AFNetworking 3.1』](https://github.com/AFNetworking/AFNetworking)!最新版本的封装,集成了get/post 方法请求数据,单图/多图上传,视频上传/下载,网络监测 等多种网络请求方式!
3.7 | [『APP中的文字和APP名字的国际化多语言处理』](http://www.cnblogs.com/boai/p/5337558.html) | 最全、最贴心的国际化处理博客!
3.8 | 3D Touch 的纯代码实现方法 | 详见:[『BABaseProject』](https://github.com/boai/BABaseProject)中的`appdelegate`!
3.9 | [『DSAlert』](https://github.com/DS-Team/DSAlert-OC](https://github.com/DS-Team/DSAlert-OC) | 目前为止,最为精简的 alert 和 actionSheet 封装!DSAlert 让你的弹框不再孤单!
3.10 | 最新、最全、最优美的友盟登录和分享的封装 | 详见:[『BABaseProject』](https://github.com/boai/BABaseProject)中的`demo 4`!
3.11 | 最新、最全、最优美的 清理 APP 缓存的封装 | 详见:[『BABaseProject』](https://github.com/boai/BABaseProject)中的`demo 2`!
3.12 | 最新、最全、最优美的 渐变navi 的封装 | 详见:[『BABaseProject』](https://github.com/boai/BABaseProject)中的`tabbar 的 消息栏目`!
3.13 | 最新、最全、最优美的 获取所有系统设置跳转 的封装 | 详见:[『BABaseProject』](https://github.com/boai/BABaseProject)中的`tabbar 的 消息栏目中demo 3`!
iOS 学习笔记五 【2016年百度地图定位详细使用方法】的更多相关文章
- Java web与web gis学习笔记(二)——百度地图API调用
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- android中百度地图定位的实现方法(仅适用于真机+WIFI联网环境)
注意:此代码的环境是:真机(系统版本为Android4.2.2)+WIFI联网(才能实现最后的运行结果):使用虚拟机调试会出现各种问题. 第一步:下载SDK和申请Key 到百度的网站http://de ...
- iOS 学习笔记 五 (2015.03.17)使用storyBoard进行tableview的跳转
方法一: 点击tableviewCell后,按住ctrl键拖拽至想要跳转的新的界面.这样跳转的结果是,点击tableview中的任何一行都会跳转到新的界面.可以通过控制cell的 属性 userInt ...
- IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法
UITextField控件的诸多特性都和UITextView相似,比如成为输入文本焦点时键盘自动显示,支持长按弹出动作选项,能够接收输入事件(开始输入,修改内容,结束输入和点击回车等). 1.特有的特 ...
- IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法
相对于UILabell所支持的较短文本内容,UITextView对于长文本的支持更好.UITextView能够以滚动的方式全部浏览到长文本,并且就像UILabel那样,从ISO6,他也提供了对NSAt ...
- iOS学习笔记-地图MapKit入门
代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...
- iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】
iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
随机推荐
- 高性能mysql读后感
1. 事务里的写操作,四种隔离级别,都会加排他锁. 2. 事务里的读操作,前三种隔离级别,不会加锁,最后一种隔离级别,会加共享锁. 3. 上面的写.读操作,都是隐式加的锁. 可以自己显示对读操作进行 ...
- Delphi制作软键盘
{ 作者: han 日期: 2006.06.02 } unit softkey; interface uses Windows, Messages, SysUtils, Variants, C ...
- Android Studio Emulator 提示 “/dev/kvm is not found” 解决办法
重新安装HAXM即可解决 1.确定已经安装HAXM SDK Manager -> Extras -> Intel x86 Emulator Accelerator (HAXM instal ...
- [Git] 根据commiter过滤该用户的所有提交
git log --pretty=oneline --author="xxxx" -(n) 仅显示最近的 n 条提交 --since,--after 仅显示指定时间之后的提交 -- ...
- linux下目录大小为什么是4K?一个目录下最多有个多少个子目录?最多有多少个文件?ls -l显示的内容中total到底是什么?
子目录数太多,会影响搜索性能. 在同一个路径下,一级子目录的个数限制为31998,如果你的应用生成的目录可能会超过这个数,那要注意进行目录分级.例如,如果目录名为数字的话,可以将数字除以10000后的 ...
- python之pack布局
#Pack为一布局管理器,可将它视为一个弹性的容器 '''1.一个空的widget'''#不使用pack # -*- coding: cp936 -*- from Tkinter imp ort * ...
- IP地址转化为32位无符号数
转自 http://blog.csdn.net/testcs_dn/article/details/38585719 一.将ip地址转成long数值 将IP地址转化成整数的方法如下: 1.通过Stri ...
- Centos 7 搭建蓝鲸V4.1.16社区版
第一次搭建蓝鲸平台,参考了蓝鲸社区的官方搭建文档. 友情链接:蓝鲸智云社区版V4.1.16用户手册 搭建时遇到了不少的坑,这里做一个详细的安装梳理 主机硬件要求 官方的推荐如下: 在本地用VMware ...
- 倍福TwinCAT(贝福Beckhoff)应用教程12.2 TwinCAT控制松下伺服 NC初步
在前面我们已经学会了使用贝福自带的调试软件完成试运行,接下来是使用TWINCAT PLC实现这个功能,右击PLC添加一个PLC项目 在VISUs上右击添加一个HMI人机界面 目前PLC程序和人 ...
- driver: Linux设备模型之input子系统具体解释
本节从总体上解说了输入子系统的框架结构.有助于读者从总体上认识linux的输入子系统.在陷入代码分析的过程中,通过本节的知识可以找准方向,明确原理. 本节重点: 输入子系统的框架结构 各层相应内核中的 ...