您的位置:首页 > 移动开发 > IOS开发

iOS地图->模拟定位

2015-04-28 16:20 567 查看
1.在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发

Map Kit :用于地图展示.

Core Location :用于地理定位.

2.热门专业术语

LBS :Location Based Service (基于位置的服务)
SoLoMo :Social Local Mobile(索罗门)(即:Social(社交的)、Local(本地的)、Mobile(移动的),连起来就是SoLoMo(索罗门),社交本地移动,即社交加本地化加移动,它代表着未来互联网发展的趋势。)


3.需要导入头文件



导入头文件:#import <CoreLocation/CoreLocation.h>


4.CLLocationManager的常用操作

/**开始用户定位*/
- (void)startUpdatingLocation;

/**停止用户定位*/
- (void) stopUpdatingLocation;

/**定位回调的方法*/
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
locations参数里面装着CLLocation对象

CLLocation用来表示某个位置的地理信息,比如经纬度、海拔等等
/**经纬度*/
@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

/**海拨*/
@property(readonly, nonatomic) CLLocationDistance altitude;
/**路线,航向(取值范围是0.0° ~ 359.9°,0.0°代表真北方向)*/
@property(readonly, nonatomic) CLLocationDirection course;

/**行走速度(单位是m/s)*/
@property(readonly, nonatomic) CLLocationSpeed speed;

/**计算2个位置之间的距离*/
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location;

/**每隔多少米定位一次*/
@property(assign, nonatomic) CLLocationDistance distanceFilter;

/**定位精确度(越精确就越耗电)*/
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;


5.经纬度与中国经纬度





6.CLPlacemark常用操作(地标,封装详细位置信息)

/**地理位置*/
@property (nonatomic, readonly) CLLocation *location;
/**区域*/
@property (nonatomic, readonly) CLRegion *region;
/**详细的地址信息*/
@property (nonatomic, readonly) NSDictionary *addressDictionary;
/**地址名称*/
@property (nonatomic, readonly) NSString *name;
/**城市*/
@property (nonatomic, readonly) NSString *locality;


7.模拟定位事例

7.1导入包

.

7.2.如果是iOS8或者以上的版本需要的在info.plist里面设置如下内容



7.3代码部分

#import "ViewController.h"
/**导入定位框架*/
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>/**采用定位代理*/
/**0.创建一个位置*/
@property (strong, nonatomic) CLLocationManager *locMgr;
@end
@implementation ViewController

/**1.懒加载,因为只创建一次,定位管理器*/
- (CLLocationManager *)locMgr{

#warning 2.定位服务不可用,用户取消了以后,返回为空
if (![CLLocationManager locationServicesEnabled]) return nil;
if (!_locMgr) {
/**3.创建定位管理者*/
self.locMgr = [[CLLocationManager alloc] init];
/**4.设置代理*/
self.locMgr.delegate = self;
}
return _locMgr;
}
- (void)viewDidLoad {
[super viewDidLoad];

/**5.开始定位用户的位置*/
[self.locMgr startUpdatingLocation];
#warning iOS8里面必须添加这个
/**6.是否允许你的定位*/
[self.locMgr requestAlwaysAuthorization];

/**7.精确度*/
_locMgr.desiredAccuracy = kCLLocationAccuracyBest;
}
#pragma mark--8.当定位开始时,回调的方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

/**8.1.取出位置对象,第一个位置,因为第一个准确*/
CLLocation *loc = [locations firstObject];
/**8.2.取出经纬度*/
#if 0
typedef struct {
CLLocationDegrees latitude;  代表纬度
CLLocationDegrees longitude; 代表经度
} CLLocationCoordinate2D;
#endif
CLLocationCoordinate2D coordinate = loc.coordinate;
/**8.3.打印经纬度*/
NSLog(@"%f%f",coordinate.latitude,coordinate.longitude);

/**4.停止定位,因为这里只需定位用户的最初位置,如果是一直定位的话,不用写下面的话*/
[self.locMgr stopUpdatingLocation];
}
@end


7.因为上面的事例是模拟定位所以,需要在模拟上设置,选择Apple

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐