//
// 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:.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

iOS第三方地图-百度地图定位的封装的更多相关文章

  1. IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

    IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocati ...

  2. iOS开发---集成百度地图完善版

    一.成为百度的开发者.创建应用 http://developer.baidu.com/map/index.php?title=首页 (鼠标移向 然后选择你的项目需要的功能 你可以在里面了解到你想要使用 ...

  3. 通过百度地图API定位--第三方开源--百度地图(一)

    1.把百度地图定位API(下载地址:http://lbsyun.baidu.com/sdk/download?selected=location)里面的libs复制到自己的项目libs里面 2.进行相 ...

  4. IOS苹果和百度地图的相关使用

    iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是 ...

  5. iOS开发之百度地图导航

    本篇主要讲述百度地图的导航功能: 第一步:在使用百度导航之前,我们需要在百度地图开放平台上下载导航的 SDK,共85.8M,网速不好的同学可提前准备好. 第二步:引入导航所需的系统包 将AudioTo ...

  6. iOS开发---集成百度地图,位置偏移问题

    iOS 集成百度SDK 请参考 百度地图官方文档 ,这里不就多啰嗦了 本文介绍的是在百度地图上根据经纬度,自定义气泡时,气泡位置的偏移,在我们天朝这种事是很常见的,也见怪不怪了,在项目中使用的百度地图 ...

  7. iOS开发---集成百度地图

    由于iOS MapKit框架很多情况并不能满足我们的需求,我们可以选择集成百度地图,那该如何操作呢? 申请Key 登录百度API管理中心申请Key http://lbsyun.baidu.com/ap ...

  8. 通过百度地图API实现搜索地址--第三方开源--百度地图(三)

    搜索地址功能是建立在能够通过百度地图API获取位置的基础上 通过百度地图定位获取位置详情:http://www.cnblogs.com/zzw1994/p/5008134.html package c ...

  9. 通过百度地图API显示当前位置在地图上(图标显示)--第三方开源--百度地图(二)

    1.下载百度地图的demo,下载地址:http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfuncti ...

  10. 在iOS中使用百度地图

    就如同在百度地图的文档中所说的一样,这么来.但是,有一个小疏忽. 到添加完所需要的framework之后,一定要记得把你的(Class-Prefix)AppDelegate的后缀改成mm. 估计百度的 ...

随机推荐

  1. 刀哥多线程现操作gcd-10-delay

    延迟操作 // MARK: - 延迟执行 - (void)delay { /** 从现在开始,经过多少纳秒,由"队列"调度异步执行 block 中的代码 参数 1. when 从现 ...

  2. POJ 2960 S-Nim<博弈>

    链接:http://poj.org/problem?id=2960 #include<stdio.h> #include<string.h> ; ; int SG[N];//S ...

  3. IBM MQ扩大队列最大消息长度

    要设置MQ的最大消息长度,需要考虑同时设置队列管理,队列以及通道的最大消息长度. 具体操作如下: runmqsc 队列管理器名称 alter qmgr maxmsgl(10000000) 1 : al ...

  4. iOS8中如何将状态栏的字体颜色改为白色

    网上的一些方法在我这行不通, 比如: UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent ...

  5. EntityFramwork(2Database First) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542

    必备条件 要完成本演练,需要安装 Visual Studio 2010 或 Visual Studio 2012. 如果使用的是 Visual Studio 2010,还需要安装 NuGet.     ...

  6. html 元素 变小手

    要设置鼠标指针放在一个元素边界范围内时所用的光标形状,需要对元素的css属性cursor进行设置.cursor属性可能的值1.default 默认光标(通常是一个箭头)2.auto 默认.浏览器设置的 ...

  7. 60.ISE PhysDesignRules ERROR

    PhysDesignRules:2100 - Issue with pin connections and/or configuration on block:<U_ila_pro_0/U0/I ...

  8. oracle增加表空间的四种方法,查询表空间使用情况

    增加表空间大小的四种方法Meathod1:给表空间增加数据文件ALTER TABLESPACE app_data ADD DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADA ...

  9. 使用Groovy构建自己的脚本环境

    场景 在进行Web服务端开发的时候,发布前通常需要测试一遍.对于一个大一点的项目,最好的办法是写个自动化测试程序. 以Groovy为例,写测试代码之前通常的有如下几个操作 引用相关的类库 import ...

  10. [SSH服务]——SSH详解、常用的远程连接工具

    在总结ssh原理前,我先做了一个ssh过程的实验 首先我搭建了这样一个实验环境: (1) SSH Server:10.0.10.198 (2) SSH Client:10.0.10.158 在Serv ...