CoreLocation定位 ios10 corelocation


CoreLocation主要应用了GPS,蜂窝基站三角网以及Wi_Fi(WPS)三种技术。

想得到定点的信息,需要涉及到几个类,CLLocationManager,CLLocation,CLLocationManagerdelegate协议,CLLocationCoodinate2D,CLLocationDegrees。

<一>先实例化一个CLLocationManager,同时设置委托及精确度等。

CCLocationManager *manager= [[CLLocationManager alloc] init];//初始化定位器
[managersetDelegate: self];//设置代理
[managersetDesiredAccuracy: kCLLocationAccuracyBest];//设置精确度

其中desiredAccuracy属性表示精确度,有5种选择如下:

desiredAccuracy属性

描述

kCLLocationAccuracyBest

精确度最佳

kCLLocationAccuracynearestTenMeters

精确度10m以内

kCLLocationAccuracyHundredMeters

精确度100m以内

kCLLocationAccuracyKilometer

精确度1000m以内

kCLLocationAccuracyThreeKilometers

精确度3000m以内

NOTE:精确度越高,用点越多,就要根据实际情况而定。

manager.distanceFilter=250;//这个表示在地图上每隔250m才更新一次定位信息。

[managerstartUpdateLocation];启动定位器,如果不用的时候就必须调用stopUpdateLocation以关闭定位功能。

<二>CCLocation对像中包含着定点的相关信息数据。其属性主要包括coordinate,altitude,horizontalAccuracy,verticalAccuracy,timestamp等,分别如下:

coordinate用来存储地理位置的latitude和longitude,分别表示纬度和经度,都是float类型.如可这样:floatlatitude=location.coordinat.latitude;location是CCLocation的实例。这里也把上面提到的CLLocationDegrees,它其实是一个double类型,在coreLocation框架中是用来储存CLLocationCoordinate2D实例coordinate的latitude和longitude,

typedefdoubleCLLocationDegrees;

typedefstruct

{CLLocationDegreeslatitude;

CLLocationDegreeslongitude}CLLocationCoordinate2D;

altitude表示位置的海拔高度,这个值是极不准确的。

horizontalAccuracy表示水平准确度,这么理解,它是以coordinate为圆心的半径,返回的值越小,证明准确度越好,如果是负数,则表示corelocation定位失败。

verticalAccuracy表示垂直准确度,它的返回值与altitude相关,所以不准确。

Timestamp返回的是定位时的时间,是NSDate类型。

<三>CLLocationMangerDelegate协议

我们只需实现两个方法就可以了,如下:

-(void)locationManager:(CLLocationManager*)manager

didUpdateToLocation:(CLLocation*)newLocation

fromLocation:(CLLocation*)oldLocation;

-(void)locationManager:(CLLocationManager*)manager

didFailWithError:(NSError*)error;

上面第一个是定位时候回访调,后者定位出错时被调。

<四>现在可以去实现定位了:

新建一个view-basedapplication模板的工程,假设项目名称为coreLocation.我们在contronller的头文件和源文件中的代码大概有如下:

.h

#import<UIKit/UIKit.h>

#import<CoreLocation/CoreLocation.h>

@interfaceCoreLocationViewController:UIViewController

<CLLocationManagerDelegate>{

CLLocationManager*locManager;

}

@property(nonatomic,retain)CLLocationManager*locManager;

@end

.m

#import"CoreLocationViewController.h"

@implementationCoreLocationViewController

@synthesizelocManager;

//ImplementviewDidLoadtodoadditionalsetupafterl————oadingtheview,typicallyfromanib.

-(void)viewDidLoad{

locManager=[[CLLocationManageralloc]init];

locManager.delegate=self;

locManager.desiredAccuracy=kCLLocationAccuracyBest;

[locManagerstartUpdatingLocation];

[superviewDidLoad];

}

-(void)didReceiveMemoryWarning{

//Releasestheviewifitdoesn'thaveasuperview.

[superdidReceiveMemoryWarning];

//Releaseanycacheddata,images,etcthataren'tinuse.

}

-(void)viewDidUnload{

//Releaseanyretainedsubviewsofthemainview.

//e.g.self.myOutlet=nil;

}

-(void)dealloc{

[locManagerstopUpdatingLocation];

[locManagerrelease];

[textViewrelease];

[superdealloc];

}

#pragmamark-

#pragmamarkCoreLocationDelegateMethods

-(void)locationManager:(CLLocationManager*)manager

didUpdateToLocation:(CLLocation*)newLocation

fromLocation:(CLLocation*)oldLocation{

CLLocationCoordinate2Dlocat=[newLocationcoordinate];

floatlattitude=locat.latitude;

floatlongitude=locat.longitude;

floathorizon=newLocation.horizontalAccuracy;

floatvertical=newLocation.verticalAccuracy;

NSString*strShow=[[NSStringalloc]initWithFormat:

@"currentpos:经度=%f维度=%f水平准确读=%f垂直准确度=%f",

lattitude,longitude,horizon,vertical];

UIAlertView*show=[[UIAlertViewalloc]initWithTitle:@"coreLoacation"

message:strShowdelegate:nilcancelButtonTitle:@"igotit"

otherButtonTitles:nil];

[showshow];

[showrelease];

}

-(void)locationManager:(CLLocationManager*)manager

didFailWithError:(NSError*)error{

NSString*errorMessage;

if([errorcode]==kCLErrorDenied){

errorMessage=@"你的访问被拒绝";}

if([errorcode]==kCLErrorLocationUnknown){

errorMessage=@"无法定位到你的位置!";}

UIAlertView*alert=[[UIAlertViewalloc]

initWithTitle:nilmessage:errorMessage

delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];

[alertshow];

[alertrelease];

}

@end

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/266242.html

更多阅读

手机号码定位跟踪软件 输入手机号定位找人

手机号码定位跟踪软件——简介手机定位跟踪系统,它是指通过特定的定位技术来获取移动手机或终端用户的位置信息(经纬度坐标),在电子地图上标出被定位对象的位置的技术或服务。手机定位系统不一定是手机GPS定位,定位技术有两种,一种是基

手机怎样定位找人 电话追踪定位找人

手机怎样定位找人——简介随着科技的进步,时尚智能手机的发展越来越完善,现在人人都拥有一部手机已是很平常的事了,相对应的手机保护软件也越来越多了.就目前的手机定位功能的实用性很适合现在的人群.比如说:对于那些想第一时间知

苹果手机怎么追踪定位 定位手机位置 对方

苹果手机怎么追踪定位——简介当前苹果 iPhone 手机系统中一项“查找我的 iPhone”定位功能,当不知道手机放哪里或是丢失的时候,可以用它来查找位置。下面简单介绍下怎么操作的方法。苹果手机怎么追踪定位——工具/原料苹果 iPhone

电脑GPS定位系统怎么装? 车辆gps定位系统

电脑GPS定位系统怎么装?——简介如何安装电脑的GPS定位系统,由三连星GPS为你提供:电脑GPS定位系统怎么装?——方法/步骤电脑GPS定位系统怎么装? 1、安装软件前,请先确认系统是否安装有framework3.5SP1的插件,如果没有安装,请先安装此插件。

怎样定位别人的手机 我想定位别人的手机

怎样定位别人的手机——简介要想定位手机,只有通过安装软件来实现,下面就为大家介绍两个定位的方法。怎样定位别人的手机——方法一怎样定位别人的手机 1、这一种方法我们通过360安全卫士和360手机卫士来实现,首先你必须在你的手机安

声明:《CoreLocation定位 ios10 corelocation》为网友女二号分享!如侵犯到您的合法权益请联系我们删除