iOS成长之路 百度地图

使用cocospod导入百度地图  详情见文档

使用 百度地图 需要获取密钥

2 配置 项目

info中

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>保证网络可用
 <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>baidumap</string>
    </array>
保证百度地图可调用导入功能文件头部
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件
 
#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件
 
#import <BaiduMapAPI_Search/BMKSearchComponent.h>//引入检索功能所有的头文件
 
#import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h>//引入云检索功能所有的头文件
 
#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件
 
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入计算工具所有的头文件
 
#import <BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周边雷达功能所有的头文件
 
#import < BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件

定位

初始化百度地图 以及 定位

mapView  =  [[BMKMapView alloc]initWithFrame:CGRectMake(0, 80, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 50)];

[self.view addSubview: mapView];

locService = [[BMKLocationService alloc]init];

设置代理

locService.delegate = self;

//启动LocationService

[locService startUserLocationService];

//以下_mapView为BMKMapView对象

代理

#pragma mark - locationInfomation(用户位置信息)

/**

*用户方向更新后,会调用此函数

*@param userLocation 新的用户位置

*/

- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation

{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

if(userLocation){

NSLog(@"heading is %@",userLocation.heading);

}

});

}

//处理位置坐标更新  定位当前位置

- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

{

if(userLocation){

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

//当前经纬度

NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

_str = [NSMutableString stringWithFormat:@"%f,%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude];

self.latitude = userLocation.location.coordinate.latitude;

self.longitude = userLocation.location.coordinate.longitude;

//更新我的位置数据

[mapView updateLocationData:userLocation];

///geo搜索服务 (将经纬度转化为地址,城市等信息,被称为反向地理编码)

self.searcher = [[BMKGeoCodeSearch alloc]init];

self.searcher.delegate = self;

CLLocationCoordinate2D point = (CLLocationCoordinate2D){self.latitude,self.longitude};

BMKReverseGeoCodeOption *reverseGeoCodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];

reverseGeoCodeSearchOption.reverseGeoPoint = point;

BOOL flag = [self.searcher reverseGeoCode:reverseGeoCodeSearchOption];

if(flag)

{

NSLog(@"反geo检索发送成功");

}

else

{

NSLog(@"反geo检索发送失败");

}

});

}

}

#pragma mark - onGetReverseGeoCodeResult(反向地理编码结果)

//接收反向地理编码结果

-(void) onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error

{

if (error == BMK_SEARCH_NO_ERROR) {

//这里打印出反向地理编码的结果,包括城市,地址等信息

NSLog(@"测试结果 %@  %@",result.addressDetail.city,result.address);

_placename.text = result.address;

}

else {

NSLog(@"抱歉,未找到结果");

}

}

#pragma mark - configDelegate(设置代理及取消代理)

//设置代理

-(void)viewWillAppear:(BOOL)animated

{

[mapView viewWillAppear];

mapView.delegate = self;

}

// 此处记得不用的时候需要置nil,否则影响内存的释放

-(void)viewWillDisappear:(BOOL)animated

{

[mapView viewWillDisappear];

//    mapView.delegate = nil; // 不用时,置nil

_searcher.delegate = nil;

}

#pragma mark - checkNetwork(检查网络及授权)

//检查网络状态

- (void)onGetNetworkState:(int)iError

{

if (0 == iError) {

NSLog(@"联网成功");

}

else{

NSLog(@"onGetNetworkState %d",iError);

}

}

#pragma mark - BMKMapViewDelegate(地图标注及路线颜色)

/**

*根据overlay生成对应的View

*@param mapView 地图View

*@param overlay 指定的overlay

*@return 生成的覆盖物View

*/

- (BMKOverlayView*)mapView:(BMKMapView *)map viewForOverlay:(id<BMKOverlay>)overlay

{

if ([overlay isKindOfClass:[BMKPolyline class]]) {

BMKPolylineView* polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];

polylineView.fillColor = [[UIColor alloc] initWithRed:0 green:1 blue:1 alpha:1];

polylineView.strokeColor = [[UIColor alloc] initWithRed:0 green:0 blue:1 alpha:0.7];

polylineView.lineWidth = 3.0;

return polylineView;

}

return nil;

}

//开启跟随

mapView.userTrackingMode = BMKUserTrackingModeFollow;

mapView.showsUserLocation = YES;//显示定位图层

写的不是很好    给自己做个保存作用
时间: 2024-08-29 18:21:05

iOS成长之路 百度地图的相关文章

iOS成长之路 百度地图覆盖物

导入百度地图 初始化百度地图 mapView  = [[BMKMapView alloc]initWithFrame:(CGRect){0,0,ViewWith,ViewHight}]; [self.view addSubview:mapView]; mapView.delegate = self; 添加线和坐标物 allarray  里面是 经纬度 if (allarray.count > 2) { CLLocationCoordinate2D coords[2]; for (NSIntege

IOS开发笔记-百度地图(第三方库)

最近做了百度地图,在导入SDK后遇到了一些问题 编译错误: linker command failed with exit code 1 (use -v to see invocation) 想了很多办法,查了很多资料,最后终于解决. 可能原因: 1. 有重复的.m文件,或者未导入 解决办法:有重复的删除即可 在工作左边导航栏Target-->Build Phases-->compile Sources中,第三库库的所有.m文件都添加到里面 2.Valid Architectures 的值 在

来自我的破船大大的博客,记录他的iOS成长之路,与君同勉!

注1:这篇文章是我的iOS成长之路系列文章中的第三篇文章,第一篇文章:iOS成长之路-1-入门,第二篇文章:iOS成长之路-2-我的第一个iOS Demo. 通过两周时间来学习iOS,我慢慢的叩开了iOS开发的大门,接下来就是一个积累的过程,我主要经历了如下几个过程: 饱览群书 跟着项目一起成长 与同行交流 做一些分享 饱览群书 在初期,我认为多看书对于个人提升有很大的帮助,从某方面来说,这主要扩展了个人对iOS开发的理解广度(初期,先不要急于往最深处研究),接着把书上的讲解与动手编程结合起来,

IOS成长之路-去掉屏幕键盘的方法

//定义两个文本框 UITextField *textName; UITextField *textSummary; //点击return 按钮 去掉 -(BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } //点击屏幕空白处去掉键盘 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent

ios之苹果和百度地图的使用

iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是百度.苹果自带地图(高德),以下总结下这两个. 一.苹果地图的使用 因为苹果使用的是高德的地图,加上苹果做的一些封装,使用起来也非常方便.不需要引入第三方框架,相比较之下,使用百度地图SDK会使源码与程序都 大10M多,这点很蛋疼.同时由于苹果使用的是高德,不会像谷歌地图一样在国内乌龟一样的访问速度

iOS将简单的百度地图SDK集成到项目中

最近在玩百度地图API,期间遇到很多问题,只能说明我蠢.现在一一记录下来,以后用到可以回来复习一下. 下载iOS的SDK,下载地址为:http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 新建工程,获取 Bundle identifier,比如:com.winson.test.cstest  注意灰色的cstest,是要手写进去的(very important): 回到百度地图API首页,如果你还不是开发

iOS开发之集成百度地图

由于iOS MapKit框架很多情况并不能满足我们的需求,我们可以选择集成百度地图,那该如何操作呢? 申请Key 登录百度API管理中心申请Key http://lbsyun.baidu.com/apiconsole/key 创建一个应用 箭头所指就是我们所要用到的Key 下载SDK http://developer.baidu.com/map/static/doc/output_ios/BaiduMap_IOSSDK_v2.6.0_All.zip 开发指南 如何使用开发包可以参考开发指南 ht

iOS开发之引用百度地图SDK(二)

关于引用百度SDK添加到项目工程中,需要注意的事项 1.申请Key(密钥)时,在应用类型中选择iOS SDK,并提供项目的Bundle Identifier. 2.在targets项的info中,需要添加key的name为Bundle display name并且value不能为null. 3.在AppDelegate类的程序入口出,需要注册申请的key,用于检测授权成功.(失败将显示不到百度地图) _mapManager = [[BMKMapManager alloc]init]; BOOL

iOS开发之集成百度地图踩过的那些坑(基于 Xcode7.0/iOS9.2)

本篇分4步讲述如何在项目中集成百度地图: 第一步:创建项目 第二步:利用 cocoaPod 导入百度地图的 SDK(pod 'BaiduMapKit' #百度地图SDK) 第三步:在 pch 文件中导入头文件和秘钥 秘钥是在 http://lbsyun.baidu.com/apiconsole/key 百度开放平台申请. #define APPKEY @"UzyiXewPsqPhcE1yS8wxqik9" 在使用SDK的类时按需引入下边的头文件 #import <BaiduMap