最近项目中遇到了关于地图定位的需求,考虑到用三方库的话项目会变大,还是用了官方自带的地图。 这是结果图: 一、CoreLocation.frame是iPhone SDK中用来检测用户位置的框架。 1.要实现定位功能,首先引入这个框架。然后添加两个类和一个协议(CLLoc ...
最近项目中遇到了关于地图定位的需求,考虑到用三方库的话项目会变大,还是用了官方自带的地图。
这是结果图:
一、CoreLocation.frame是iPhone SDK中用来检测用户位置的框架。
1.要实现定位功能,首先引入这个框架。然后添加两个类和一个协议(CLLocationManager、CLLocation、CllocationManagerDelegate)。
精确度级别是通过位置管理器的desiredAccuracy属性来设置的,它的取值可以参照下表。精确级别越高,手机消耗的电越多。
desiredAccuracy属性值 | 描述 |
kCLLocationAccuracyBest | 精确度最好 |
kCLLocationAccuracyNearestTenMeters | 精确到10米以内 |
kCLLocationAccuracyHundredMeters | 精确到100米以内 |
kCLLocationAccuracyKilometer | 精确到1000米以内 |
kCLLocationAccuracyThreeKilometers | 精确到3000米以内 |
2.启动位置管理器进行定位。[locManager startUpdatingLocation](也可以停止检测位置更新[locManager stopUpdatingLocation])
3.获取位置信息
coordinate用来存储地理位置的latitude和longitude,分别代表地理位置的纬度和经度。
location是CLLocation类的一个实例对象。
altitude属性表示某个位置的海拔高度,返回值为浮点型,实际定位时极不准确。
horizontalAccuracy属性表示水平准确度,返回值为浮点型。它是以coordinate为圆心的圆的半径,半径越小定位越准确,如果horizontalAccuracy为负值,表示Core Location定位失败。
verticalAccuracy属性表示垂直水平准确度,返回值为浮点型。它的取值和海拔的取值altitude有关系,与实际情况相差很大。
4.CLLocationManagerDelegate协议
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{ }- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ NSString * errorMessage; if ([error code] == kCLErrorDenied) { errorMessage = @"访问被拒绝!"; } if ([error code] == kCLErrorLocationUnknown) { errorMessage = @"无法定位到你的位置!"; }}
原标题:苹果自带地图进行定位
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。