//
// 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. Hive深入浅出

    1.  Hive是什么 1) Hive是什么? 这里引用 Hive wiki 上的介绍: Hive is a data warehouse infrastructure built on top of ...

  2. [原创]从Oracle和Microsoft Sql Server迁移到PostgreSQL Plus Advanced Server

    一.了解PPAS的迁移方式1.在线迁移和离线迁移使用Migration Studio或Migration Toolkit直接向PPAS数据库进行对象定义和数据表中数据的迁移称为在线迁移,生成要迁移对象 ...

  3. Repair the database using DBCC CHECKDB

    So now if you want to place AdventureWorks2008R2 sample database in a single-user mode, then write t ...

  4. Jni中C++和Java的参数传递

    Jni中C++和Java的参数传递 如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用V ...

  5. Swift的一些基础内容

    //①判断字符串是否为空的方法 isEmpty var str:String = "www.baidu.com" if str.isEmpty { print("空字符串 ...

  6. [转载]EF Code First 学习笔记:约定配置

    要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...

  7. Log4Net学习【三】

    Log4Net配置详解 配置方式一 在相应的应用程序的配置文件中配置,(WinForm对应的是*.exe.config,WebForm对应的是*.config),本实例是Web应用程序,以Web.co ...

  8. 安装v2meet客户端 进入会议依然 提示 您还未安装视频会议的客户端,请下载安装

    解决办法 1.安装软件,要用管理员权限安装 2.装一个360浏览器,登录会议,这样就成功了.原装IE9却不行. 估计是IE9做了一些安全限制,由于时间关系就没有再处理了.

  9. 启动级别:init 0,1,2,3,4,5,6

    这是个很久的知识点了,只是自己一直都迷迷糊糊的,今天在翻出来好好理解下.. 0:停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system 3:完全多用户 5:图形化 ...

  10. 本人在安装ADT Bundle for windows的各种问题总结

    本人在安装ADT Bundle for windows的各种问题总结 1.解决国内访问Google服务器的困难: 1.启动 Android SDK Manager : 2.打开主界面,依次选择「Too ...