• iOS第三方地图-百度地图定位的封装


    //
    //  BaiduMapTools.h
    //  baidumapTest
    //
    //  Created by apple on 15/8/26.
    //  Copyright (c) 2015年 tqh. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface WJBaiduMapTools : NSObject
    /**单例*/
    +(WJBaiduMapTools *)instance;
    
    /**定位,能得到省市街道*/
    - (void)startlocation:(BOOL)needaddress
          locationSuccess:(void(^)(double longitude,double latitude)) locationSuccess
           addressSuccess:(void(^)(double longitude,double latitude,BMKAddressComponent *address))addressSuccess;
    
    /**停止定位*/
    - (void)stoplocation;
    @end
    //
    //  BaiduMapTools.m
    //  baidumapTest
    //
    //  Created by apple on 15/8/26.
    //  Copyright (c) 2015年 tqh. All rights reserved.
    //
    
    #import "WJBaiduMapTools.h"
    //注:需要导入百度地图api
    
    @interface WJBaiduMapTools ()<BMKLocationServiceDelegate,BMKGeoCodeSearchDelegate> {
        BMKLocationService *_locService; //定位
        BMKGeoCodeSearch *_searcher;     //geo搜索服务
        BOOL _needaddress;               //是否定位
        //得到经纬度
        void (^ _locationSuccess)(double longitude,double latitude);
        //得到经纬度和地理位置信息
        void (^ _addressSuccess)(double longitude,double latitude,BMKAddressComponent *address);
    }
    
    @end
    
    @implementation WJBaiduMapTools
    
    +(WJBaiduMapTools *)instance {
        static WJBaiduMapTools *location;
        @synchronized(self) {
            if(!location) {
                location = [[WJBaiduMapTools alloc] init];
                
            }
        }
        return location;
    }
    
    - (instancetype)init
    {
        self = [super init];
        if (self) {
            _needaddress=NO;
            [BMKLocationService setLocationDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
            [BMKLocationService setLocationDistanceFilter:100.f];
            _locService = [[BMKLocationService alloc]init];
            _locService.delegate = self;
            _searcher =[[BMKGeoCodeSearch alloc]init];
            _searcher.delegate = self;
        }
        return self;
    }
    
    //开始定位
    -(void)startlocation:(BOOL)needaddress locationSuccess:(void (^)(double, double))locationSuccess addressSuccess:(void (^)(double, double, BMKAddressComponent *))addressSuccess{
        _needaddress=needaddress;
        _locationSuccess=locationSuccess;
        _addressSuccess=addressSuccess;
        if (_locService!=nil) {
            [_locService startUserLocationService];
        }
    }
    
    //停止定位
    - (void)stoplocation {
        if (_locService!=nil) {
            [_locService stopUserLocationService];
        }
    }
    
    // 定位成功
    -(void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation{
        [_locService stopUserLocationService];
        double longitude=userLocation.location.coordinate.longitude;
        double latitude=userLocation.location.coordinate.latitude;
        if (_locationSuccess) {
            _locationSuccess(longitude,latitude);
        }
        if (_needaddress) {
            //发起反向地理编码检索
            BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
            reverseGeocodeSearchOption.reverseGeoPoint = (CLLocationCoordinate2D){latitude,longitude};
            BOOL flag = [_searcher reverseGeoCode:reverseGeocodeSearchOption];
            if(flag)
            {
                NSLog(@"反geo检索发送成功");
            }
            else
            {
                NSLog(@"反geo检索发送失败");   
            }
        }else{
            
        }
    }
    
    -(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
        if (error == BMK_SEARCH_NO_ERROR) {
            if (_addressSuccess) {
                _addressSuccess(result.location.longitude,result.location.latitude,result.addressDetail);
            }
        }
    }
    @end
  • 相关阅读:
    redhat 7.6 常用命令
    redhat 7.6 VI编辑操作
    redhat 7.6 网络配置
    华为学习配置笔记-01 配置con密码
    redhat 7.6 ssh 服务配置
    web前端面试第一次[addEventListenr();绑定事件]
    redis集群搭建
    linux服务器重启后redis数据丢失问题
    redis日志文件路径的设置
    linux下redis安装使用
  • 原文地址:https://www.cnblogs.com/hxwj/p/4761099.html
Copyright © 2020-2023  润新知