首页 > 代码库 > IOS学习之——地图2 跟踪用户位置变化

IOS学习之——地图2 跟踪用户位置变化

欢迎转载,转载请注明出处

本文地址:http://blog.csdn.net/zhenggaoxing/article/details/42707685


综述

mapkit提供了跟踪用户位置和方向变化的API,所以我们这里不用自定编辑定位信息,交给系统来搞。

添加framework

技术分享

实现授权获取位置信息

在iOS8中,没有用户授权程序是无法获取定位信息的,所以我们需要在info.plist上添加两个键值:

NSLocationAlwaysUsageDescription 

NSLocationWhenInUseUsageDescription

同时给self(viewcontroller)添加CLLocationmanager 类型的属性

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CLLocationManagerDelegate.h>

@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (strong,nonatomic) CLLocationManager *locationManage;

然后实现请求授权方法:

    self.locationManage=[CLLocationManager new];
    [self.locationManage requestAlwaysAuthorization];

请求授权的方法有两个:

requestAlwaysAuthorization 总是授权

requestWhenInUseAuthorization  试用的时候授权

实现之后的效果:(用户允许你获取位置信息)

技术分享技术分享

实现跟踪

设置跟踪的方式

    if([CLLocationManager locationServicesEnabled])
    {
        mapView.mapType=MKMapTypeStandard;
        mapView.delegate=self;
        mapView.showsUserLocation=YES;
        [mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];// 设置跟踪方式
    }

跟踪的方式有三种可选的

MKUserTrackingModeNone 不跟踪

MKUserTrackingModeFollow 跟踪

MKUserTrackingModeFollowWithHeading 跟踪获取位置信息和方向信息

实时更新跟踪的位置信息

	MKUserTrackingModeNone = 0, // the user's location is not followed
	MKUserTrackingModeFollow, // the map follows the user's location
	MKUserTrackingModeFollowWithHeading,

看看效果:是不是很酷?但是:范围是不是大了点?

技术分享

设置显示范围(region)

添加代码如下:
        MKCoordinateRegion viewRegion=MKCoordinateRegionMakeWithDistance(mapView.centerCoordinate, 1000, 1000);    
        [mapView setRegion:viewRegion animated:YES];
第一行代码设置三个参数意义:原点,南北,东西
详见: 

IOS学习之——地图1 显示地图 +现实地图 


看看最终效果:

OS学习之——定位服务4 设置测试位置调试测试位置

技术分享


源代码:

https://git.oschina.net/zhengaoxing/No15.2.2follow



IOS学习之——地图2 跟踪用户位置变化