/**

*  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 - 基本使用的更多相关文章

  1. iOS之原生地图与高德地图

    原生地图 1.什么是LBS LBS: 基于位置的服务 Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位 2. ...

  2. iOS原生地图与高德地图的使用

    原生地图 1.什么是LBS LBS: 基于位置的服务 Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位 2. ...

  3. [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]

    运行效果:            一.利用<CoreLocation/CoreLocation.h>定位 创建变量 CLLocationManager *locationManager , ...

  4. CoreLocation+MapKit系统定位(含坐标以及详细地址)

    iOS8 之后出现一些新的配置 [self.manager requestWhenInUseAuthorization]; 并且在info.plist文件中增加 NSLocationWhenInUse ...

  5. 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等

    转自:http://blog.csdn.net/dolacmeng/article/details/46594839 以前做项目用高德地图SDK,需要注册账号和AppID,然后下载SDK集成到项目中, ...

  6. 【iOS】7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示

    > 本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. --- > 本文相关目录: ================== 所属文集:[[ ...

  7. 【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  8. 【iOS】7.4 定位服务->3.3 地图框架MapKit 功能3:3D视图

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  9. 【iOS】7.4 定位服务->3.4 地图框架MapKit 功能4:地图截图

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

随机推荐

  1. 触摸与手势学习-swift

    触摸是一个UITouch对象,该对象放在一个UIEvent中,每个UIEvent包含一个或多个UITouch对象,每个UITouch对象对应一个手指.系统将UIEvent发送到应用程序上,最后应用程序 ...

  2. Ubuntu远程桌面xrdp方法

    xrdp方式,该方法支持多用户登录并远程桌面. 首先在Ubuntu上安装GNOME界面,在终端输入命令: sudo apt-get install gnome-panel 安装完成后注销用户. 点击自 ...

  3. Android(java)学习笔记141:各种边距设置

    1. android:layout_paddingLeft 内边距,对谁用,指的是谁的内部内容边距 2. android:layout_marginLeft 外边距,对谁用,指的是谁距离外层容器的边距 ...

  4. openoffice转换过程中遇到繁体字文档转换失败的问题

    今天发现上线的文档转换功能中存在一个文档转换不成功,查看后台日志标志文档无法加载成功,提示日志如下: INFO: connected Jul 08, 2015 2:50:33 PM com.artof ...

  5. git对象存储

    之前提到当存储数据内容时,会在objects文件夹下存储一个git对象.我们花些时间来看看 Git 是如何存储对象的.你将看来如何通过 Ruby 脚本语言存储一个 blob 对象 ,有必要了解一下对象 ...

  6. YII中路径别名

    路径别名 system:代表framework目录 system.web:代表framework/web目录 zii:代表framework/zii目录 webroot:代表项目下的app目录(htt ...

  7. java中substring和indexof() 和lastindexof()

    java中substring和indexof() 和lastindexof() str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字 ...

  8. Hazelcast

    Hazelcast是一个高度可扩展的数据分发和集群平台.特性包括: 提供java.util.{Queue, Set, List, Map}分布式实现. 提供java.util.concurrency. ...

  9. 一个用C#实现的虚拟WiFi设置程序

    前言:         本人常年使用Windows 7(虽然在努力学习Ubuntu,但是必须承认Windows 7上拥有大量的优秀软件,比如Evernote.Microsoft Office等).但是 ...

  10. 20160405javaweb之jdbc

    一.数据库驱动的概念.JDBC 数据库厂商提供的用来操作数据库用的jar包就是数据库驱动.各个厂商如果提供各自的数据库驱动的话会导致开发人员学习成本太高,所以sun公司提供了一套数据库驱动应该遵循的接 ...