定位 - MapKit - 基本使用
/**
* Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException',
reason: 'Could not instantiate class named MKMapView'
*
* @ 如果storyboard中用到了地图, 需要导入MapKit框架
*/
#import "ViewController.h"
#import <MapKit/MapKit.h>
@interface ViewController ()<MKMapViewDelegate>
/**
* 地图
*/
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (nonatomic, strong) CLLocationManager *mgr;
@property (nonatomic, strong) CLGeocoder *geocoder;
@end
@implementation ViewController
- (CLGeocoder *)geocoder{
if (!_geocoder) {
_geocoder = [[CLGeocoder alloc] init];
}
return _geocoder;
}
- (CLLocationManager *)mgr{
if (!_mgr) {
_mgr = [[CLLocationManager alloc] init];
}
return _mgr;
}
- (void)viewDidLoad {
[super viewDidLoad];
// 在 ios8 中如果想 追踪用户隐私信息, 必须主动请求隐私权限
if (IOS8) {
[self.mgr requestAlwaysAuthorization];
}
// self.mapView.scrollEnabled = NO;
self.mapView.rotateEnabled = NO;
/** 1. 设置显示类型
*
MKMapTypeStandard --- 标准(默认)
MKMapTypeSatellite, --- 卫星
MKMapTypeHybrid --- 混合的
*/
self.mapView.mapType = MKMapTypeStandard;
// 2. 如果想利用 MapKit 获取用户的位置, 可以追踪
/**
MKUserTrackingModeNone = 0, // the user's location is not followed
MKUserTrackingModeFollow, // the map follows the user's location --- 追踪
MKUserTrackingModeFollowWithHeading, // the map follows the user's location and heading -- 追踪并获得方向
*/
self.mapView.userTrackingMode = MKUserTrackingModeFollow;
// 3. 设置代理
self.mapView.delegate = self;
}
#pragma mark - MKMapViewDelegate
/**
* 地图区域改变完成 会调用此方法
*/
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
LogYellow(@"地图区域改变完成");
/**
*
CLLocationCoordinate2D center;
MKCoordinateSpan span;
*/
LogCyan(@"%f --- %f",self.mapView.region.span.latitudeDelta, self.mapView.region.span.longitudeDelta);
}
/**
* 地图区域即将改变 会调用此方法
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
LogYellow(@"地图区域即将改变");
}
*/
/**
* 每次更新用户位置就会调用此方法(调用不频繁, 只有位置变化才会调用)
* @mapView 触发事件的空间
* @userLocation 大头针的模型
*/
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
/**
* 地图上蓝色的点, 称之为大头针
大头针: title - 标题
subtitle - 子标题
location - 位置
heading - 方向
*/
LogRed(@"%f -- %f",userLocation.location.coordinate.latitude, userLocation.location.coordinate.longitude);
// 设置大头针显示内容
// userLocation.title = @"JGL";
// userLocation.subtitle = @"NX";
// 利用反地理编码, 设置标题
[self.geocoder reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *placeMark = [placemarks firstObject];
LogMagenta(@"%@",placeMark);
userLocation.title = placeMark.name;
userLocation.subtitle = placeMark.locality;
}];
// 移动地图到当前用户所在位置
[self.mapView setCenterCoordinate:userLocation.location.coordinate animated:YES];
// 设置地图显示的区域
CLLocationCoordinate2D center = userLocation.location.coordinate;
// 指定经纬度的跨度
MKCoordinateSpan span = MKCoordinateSpanMake(0.001, 0.0001);
// 将用户的当前位置 设置为中心点, 并且制定显示的跨度
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
[self.mapView setRegion:region animated:YES];
}
定位 - MapKit - 基本使用的更多相关文章
- iOS之原生地图与高德地图
原生地图 1.什么是LBS LBS: 基于位置的服务 Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位 2. ...
- iOS原生地图与高德地图的使用
原生地图 1.什么是LBS LBS: 基于位置的服务 Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位 2. ...
- [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]
运行效果: 一.利用<CoreLocation/CoreLocation.h>定位 创建变量 CLLocationManager *locationManager , ...
- CoreLocation+MapKit系统定位(含坐标以及详细地址)
iOS8 之后出现一些新的配置 [self.manager requestWhenInUseAuthorization]; 并且在info.plist文件中增加 NSLocationWhenInUse ...
- 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等
转自:http://blog.csdn.net/dolacmeng/article/details/46594839 以前做项目用高德地图SDK,需要注册账号和AppID,然后下载SDK集成到项目中, ...
- 【iOS】7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示
> 本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. --- > 本文相关目录: ================== 所属文集:[[ ...
- 【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- 【iOS】7.4 定位服务->3.3 地图框架MapKit 功能3:3D视图
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- 【iOS】7.4 定位服务->3.4 地图框架MapKit 功能4:地图截图
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
随机推荐
- phpcms 源码分析一: common.inc.php
其实就是从网上找到的的逆雪寒的分析, 我下来之后发现格式和错字的问题,非常影响阅读,现在我就是做了下搬运工的角色, 同时将格式调整到可读性提高点而已,让各位看官稍微舒心点: 下面进入整体: < ...
- POJ3974 Palindrome
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- [转]SharePoint 2010/2013 使用Javascript来判断权限的三种方法
本文讲述SharePoint 2010/2013 使用Javascript来判断权限的三种方法的实现方式及其优缺点. 1. 根据用户所在的SharePoint组(比如用户在Leader 组才可以使用审 ...
- T-SQL基础 (子查询,连接查询,交叉查询,事务|| 笔记0807)
一: A.子查询: 1.select 字段名 from table where 字段名=(select 字段名 from table 条件) //只能做1个匹配 2.select 字段名 from ...
- Jquery Table添加行、删除行
html页面代码 <table id="tblUserInfo"> </table> Js代码 function DealUserInfo(qty){ ) ...
- Objective-C 获取当前执行函数的名称
当打印日志时为了方便跟踪,需要抛出当前执行函数的名称,一样可以使用c++的宏__FUNCTION__实现. @implementation CTPerson -(void)show { NSLog(@ ...
- swift-闭包和类的声明
//闭包:类似Oc中的block 反向传值引起代码的回调 func hasClosureMathes(arr : [Int],value:Int,cb:(num:Int,value : Int)-&g ...
- SDL实现按钮
是的,按钮控件很常见,几乎在每一个Windows窗体内都能找到它的身影.SDL作为一套“一套开放源代码的跨平台多媒体开发库”,自然可以实现按钮.而按钮实现的重点,就是SDL的鼠标响应事件. SDL的鼠 ...
- thinkphp 自定义标签
关于标签的个人理解是 拼凑php 字符串 通过eval()来进行,返回数据.过程应该是这样的,在模板中加入 定义标签为<mytag:list></mytag>,那么在mvc 中 ...
- 搭建java开发环境
windows 去Oracle官网下载exe文件,双击安装. 修改系统环境变量(我的电脑 -> 属性 -> 高级 -> 环境变量). JAVA_HOME: D:\Java\jdk1. ...