iOS 百度地图 判断应用是否授权、地理位置的正反编码

来源:互联网 发布:自学剑道软件 编辑:程序博客网 时间:2024/05/16 14:53

<span style="font-family:Arial, Helvetica, sans-serif;font-size:18px;">一、判断应用是否打开定位服务</span>
<span style="font-family: Arial, Helvetica, sans-serif;">#pragma mark ---  是否打开了定位服务</span>

-(void)isOpenBmkLocationService:(void(^)(BOOL state))completion{        if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways         || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse)) {                        completion(YES);            NSLog(@"已经打开了定位服务")                    }    else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied){        [SVProgressHUD showErrorWithStatus:@"请在iPhone的\"设置-隐私-定位服务\"中允许访问位置信息"];        NSLog(@"定位功能不可用");    }}

二、地理位置反编码

头文件

#import <BaiduMapAPI_Search/BMKGeocodeSearch.h>

编码

/** *  地理位置反编码 * *  @param completion 城市名 */-(void)BaiDuMapGeoCodeSearch:(getCityName)cityBlock{        self.block = cityBlock;        _codeSearch = [[BMKGeoCodeSearch alloc] init];    /**     *  用完之后nil掉,会影响内存释放     */    _codeSearch.delegate = self;    /**     *  初始化逆地理编码类     */    BMKReverseGeoCodeOption * codeOption = [[BMKReverseGeoCodeOption alloc] init];    /**     *  需要逆地理编码的坐标位置(经纬度)     */    codeOption.reverseGeoPoint = self.location;    [_codeSearch reverseGeoCode:codeOption];    }-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{        if (self.block && [result.addressDetail.city length]) {        self.block(result.addressDetail.city);    }}

三、地理位置正编码

代理的引用与释放

-(void)viewWillAppear:(BOOL)animated{    [self.mapView viewWillAppear];    self.mapView.delegate = self;     _codeSearch.delegate = self;}-(void)viewWillDisappear:(BOOL)animated{    [self.mapView viewWillDisappear];    self.mapView.delegate = nil;    self.codeSearch.delegate = nil;}
编码

-(void)BaiDuMapGeoCodeSearch:(MapViewBlock)mapBlock{        _codeSearch = [[BMKGeoCodeSearch alloc] init];        BMKGeoCodeSearchOption * codeOption = [[BMKGeoCodeSearchOption alloc] init];    //    codeOption.city = @"杭州市";    codeOption.address = @"需要编码的地理位置";            [self.codeSearch geoCode:codeOption];        self.block = mapBlock;}-(void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{        if (self.block && result.location.longitude != 0.0) {                self.block(result.location);            }    }
调用后的显示

头文件

#import <BaiduMapAPI_Map/BMKAnnotation.h>#import <BaiduMapAPI_Map/BMKPointAnnotation.h>#import <BaiduMapAPI_Map/BMKPinAnnotationView.h>

[self BaiDuMapGeoCodeSearch:^(CLLocationCoordinate2D coordinate) {        //显示位置        self.mapView.centerCoordinate = coordinate;        //添加标记        [self createPointAnnotationWithCoordinate:coordinate];            }];
/** *  只有在添加大头针的时候才会调用 */-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation{        if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {        BMKPinAnnotationView * annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation"];        annotationView.pinColor = BMKPinAnnotationColorPurple;        // 从天上掉下效果        annotationView.animatesDrop = YES;        // 不可拖拽        annotationView.draggable = YES;        return annotationView;    }        return nil;}/** *  添加一个大头针 显示用户位置 * *  @param location */-(BMKPointAnnotation *)createPointAnnotationWithCoordinate:(CLLocationCoordinate2D)coordate{    BMKPointAnnotation * point = [[BMKPointAnnotation alloc] init];    point.coordinate = coordate;    [self.mapView addAnnotation:point];    return point;}




0 0
原创粉丝点击