对 'CoreLocation' say so

2016-08-08  本文已影响27人  Manba_小洛

应用场景


1.CoreLocation框架的使用

```objc
#import <CoreLocation/CoreLocation.h>
```

2.CLLocationManager

-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations;
- `locations`参数里面装着所有的`CLLocation`对象, 一般取`lastObject`即可

3.CLLocation

@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;
@property(readonly, nonatomic) CLLocationDistance altitude;
@property(readonly, nonatomic) CLLocationDirection course 
@property(readonly, nonatomic) CLLocationSpeed speed
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

4.用户隐私的保护


5. iOS 8.0+ 的定位适配

// 请求允许在前后台都能获取用户授权

NSLocationAlwaysUsageDescription: 允许在前后台获取GPS信息的描述
NSLocationWhenInUseDescription: 允许在前台获取GPS的描述
```


6. iOS 9.0 定位补充

@property(assign, nonatomic) BOOL allowsBackgroundLocationUpdates
```


蓝条
- (void)requestLocation  // 单次请求
- (void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations  // 成功调用
- (void)locationManager:(nonnull CLLocationManager *)manager didFailWithError:(nonnull NSError *)error  // 失败调用

7. CLLocationCoordinate2D

typedef struct {
    CLLocationDegress latitude;  // 经度
    CLLocationDegress longitude;   // 纬度
} CLLocationCoordinate2D;
----
####8. 模拟位置
- 如果是模拟器, 可以自定义位置(经纬度)
![模拟器自定义位置](https://img.haomeiwen.com/i1176549/9c98843b16c95cbf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![设置经纬度](https://img.haomeiwen.com/i1176549/48b799cd0b5648f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
----
####9. CLGeocoder
- 使用`CLGeocoder`可以完成"地理编码" 和 "反地理编码" 
  - 地理编码: 根据给定的地名, 获得具体的位置信息 (比如经纬度, 地址的全称等)
  - 反地理编码: 根据给定的经纬度, 获得具体的位置信息
- 地理编码方法
```objc
- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;

typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);
```
- 这个block传递两个参数
- error: 当编码出错时 (比如编码不出具体的信息) 有值
- placemarks: 里面装着CLPlacemark对象


10. CLPlacemark

@property (nonatomic, readonly, copy, nullable) CLLocation *location;
- 区域objc
@property (nonatomic, readonly, copy, nullable) CLRegion *region;
- 详细的地址信息objc
@property (nonatomic, readonly, copy, nullable) NSDictionary *addressDictionary;
- 地址名称objc
@property (nonatomic, readonly, copy, nullable) NSString *name;
- 城市objc
@property (nonatomic, readonly, copy, nullable) NSString *locality;
```

上一篇 下一篇

猜你喜欢

热点阅读