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

本文详细介绍了如何在iOS应用中使用MapKit框架实现定位服务,并通过设置地图类型、跟踪用户位置、调整显示范围等操作,实现实时地图显示与用户位置跟踪的功能。重点突出了iOS8环境下获取用户授权的重要性,以及如何通过代码实现不同跟踪模式的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

本文地址: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];
第一行代码设置三个参数意义:原点,南北,东西


看看最终效果:

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



源代码:

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值