本文介绍三种接口:

1.基础地图
2.POI检索
3.定位

首先是配置环境,有两种方法,方法在官方教程里都有,不再多说

1.使用CocoaPods自动配置【这个方法特别好,因为当你使用CocoaPods配置完之后就可以直接使用了,简单到你都不敢相信,我他妈用手动配置,每次都有各种问题,解决起来烦死人,使用CocoaPods配置,可能会报一个错(linker command failed with exit code 1 (use -v to see invocation)),但是,很好解决,只需要找到Build settings->Linking->Other Linker Flags,添加一个-all_load就可以了 】

2.手动配置【这个方法就是狗屎 bull shit】

特别注意:

 、如果在iOS9中使用了调起百度地图客户端功能,必须在"Info.plist"中进行如下配置,否则不能调起百度地图客户端。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
</array>
、自iOS SDK v2..0起,为了对iOS8的定位能力做兼容,需要在info.plist里添加(以下二选一,两个都添加默认使用 NSLocationWhenInUseUsageDescription):
NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述
NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述
、在使用Xcode6进行SDK开发过程中,需要在info.plist中添加:Bundle display name ,且其值不能为空(Xcode6新建的项目没有此配置,若没有会造成manager start fail

配置完成后

在AppDelegate.m文件中添加对BMKMapManager的初始化,并填入申请的授权Key

 #import "AppDelegate.h"
#import <BaiduMapAPI_Base/BMKMapManager.h>
@interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //创建并初始化一个引擎对象
BMKMapManager *manager = [[BMKMapManager alloc] init];
//启动地图引擎
BOOL success = [manager start:@"zBWLNgRUrTp9CVb5Ez6gZpNebljmYylO" generalDelegate:nil]; if (!success) {
NSLog(@"失败");
}
// Override point for customization after application launch.
return YES;
}

1.基础地图

 #import "ViewController.h"
#import <BaiduMapAPI_Map/BMKMapView.h>
@interface ViewController ()<BMKMapViewDelegate> @property (nonatomic,strong) BMKMapView *mapView;//地图视图
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
//初始化地图
self.mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
self.mapView.delegate =self;
//设置地图的显示样式
self.mapView.mapType = BMKMapTypeSatellite;//卫星地图 //设定地图是否打开路况图层
self.mapView.trafficEnabled = YES; //底图poi标注
self.mapView.showMapPoi = NO; //在手机上当前可使用的级别为3-21级
self.mapView.zoomLevel = ; //设定地图View能否支持旋转
self.mapView.rotateEnabled = NO; //设定地图View能否支持用户移动地图
self.mapView.scrollEnabled = NO; //添加到view上
[self.view addSubview:self.mapView]; //还有很多属性,根据需求查看API
}

因为我们选的样式是卫星地图,所有效果如下

2.定位

 #import "ViewController.h"
#import <BaiduMapAPI_Map/BMKMapView.h>
#import <BaiduMapAPI_Location/BMKLocationService.h>
@interface ViewController ()<BMKLocationServiceDelegate,BMKMapViewDelegate> @property (nonatomic,strong) BMKMapView *mapView;//地图视图
@property (nonatomic,strong) BMKLocationService *service;//定位服务 @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; //初始化地图
self.mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
self.mapView.delegate =self; //添加到view上
[self.view addSubview:self.mapView]; //初始化定位
self.service = [[BMKLocationService alloc] init]; //设置代理
self.service.delegate = self; //开启定位
[self.service startUserLocationService]; // Do any additional setup after loading the view, typically from a nib.
} #pragma mark -------BMKLocationServiceDelegate /**
*用户位置更新后,会调用此函数
*@param userLocation 新的用户位置
*/
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation { //展示定位
self.mapView.showsUserLocation = YES; //更新位置数据
[self.mapView updateLocationData:userLocation]; //获取用户的坐标
self.mapView.centerCoordinate = userLocation.location.coordinate; self.mapView.zoomLevel =; }

效果如下

3.POI检索

 #import "ViewController.h"
#import <BaiduMapAPI_Map/BMKMapView.h>
#import <BaiduMapAPI_Location/BMKLocationService.h>
#import <BaiduMapAPI_Search/BMKPoiSearch.h>
#import <BaiduMapAPI_Map/BMKAnnotation.h>
#import <BaiduMapAPI_Map/BMKPointAnnotation.h>
#import <BaiduMapAPI_Map/BMKPinAnnotationView.h> #define kWidth [UIScreen mainScreen].bounds.size.width
@interface ViewController ()<BMKLocationServiceDelegate,BMKPoiSearchDelegate,BMKMapViewDelegate> @property (nonatomic,strong) BMKMapView *mapView;//地图视图
@property (nonatomic,strong) BMKLocationService *service;//定位服务
@property (nonatomic,strong) BMKPoiSearch *poiSearch;//搜索服务 @property (nonatomic,strong) NSMutableArray *dataArray;
@end @implementation ViewController - (NSMutableArray *)dataArray {
if (!_dataArray) {
_dataArray = [NSMutableArray array]; }
return _dataArray; }
- (void)viewDidLoad {
[super viewDidLoad]; //初始化地图
self.mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
self.mapView.delegate =self;
// //设置地图的显示样式
// self.mapView.mapType = BMKMapTypeSatellite;//卫星地图
//
// //设置路况
// self.mapView.trafficEnabled = YES;
//
// //底图poi标注
// self.mapView.showMapPoi = NO;
//
// //在手机上当前可使用的级别为3-21级
// self.mapView.zoomLevel = 21;
//
// //旋转
// self.mapView.rotateEnabled = NO;
//
// //拖拽
// self.mapView.scrollEnabled = NO;
// [self.view addSubview:self.mapView]; //初始化定位
self.service = [[BMKLocationService alloc] init]; //设置代理
self.service.delegate = self; //开启定位
[self.service startUserLocationService]; // Do any additional setup after loading the view, typically from a nib.
} #pragma mark -------BMKLocationServiceDelegate /**
*用户位置更新后,会调用此函数
*@param userLocation 新的用户位置
*/
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation { //展示定位
self.mapView.showsUserLocation = YES; //更新位置数据
[self.mapView updateLocationData:userLocation]; //获取用户的坐标
self.mapView.centerCoordinate = userLocation.location.coordinate; self.mapView.zoomLevel =; //初始化搜索
self.poiSearch =[[BMKPoiSearch alloc] init]; self.poiSearch.delegate = self; //初始化一个周边云检索对象
BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc] init]; //索引 默认为0
option.pageIndex = ; //页数默认为10
option.pageCapacity = ; //搜索半径
option.radius = ; //检索的中心点,经纬度
option.location = userLocation.location.coordinate; //搜索的关键字
option.keyword = @"小吃"; //根据中心点、半径和检索词发起周边检索
BOOL flag = [self.poiSearch poiSearchNearBy:option];
if (flag) {
NSLog(@"搜索成功");
//关闭定位
[self.service stopUserLocationService];
}
else { NSLog(@"搜索失败");
} } #pragma mark -------BMKPoiSearchDelegate
/**
*返回POI搜索结果
*@param searcher 搜索对象
*@param poiResult 搜索结果列表
*@param errorCode 错误号,@see BMKSearchErrorCode
*/
- (void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult *)poiResult errorCode:(BMKSearchErrorCode)errorCode { //若搜索成功
if (errorCode ==BMK_SEARCH_NO_ERROR) { //POI信息类
//poi列表
for (BMKPoiInfo *info in poiResult.poiInfoList) { [self.dataArray addObject:info]; //初始化一个点的注释 //只有三个属性
BMKPointAnnotation *annotoation = [[BMKPointAnnotation alloc] init]; //坐标
annotoation.coordinate = info.pt; //title
annotoation.title = info.name; //子标题
annotoation.subtitle = info.address; //将标注添加到地图上
[self.mapView addAnnotation:annotoation];
}
} } /**
*返回POI详情搜索结果
*@param searcher 搜索对象
*@param poiDetailResult 详情搜索结果
*@param errorCode 错误号,@see BMKSearchErrorCode
*/
- (void)onGetPoiDetailResult:(BMKPoiSearch *)searcher result:(BMKPoiDetailResult *)poiDetailResult errorCode:(BMKSearchErrorCode)errorCode { NSLog(@"%@",poiDetailResult.name); } #pragma mark -------------BMKMapViewDelegate /**
*根据anntation生成对应的View
*@param mapView 地图View
*@param annotation 指定的标注
*@return 生成的标注View
*/
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation { //如果是注释点
if ([annotation isKindOfClass:[BMKPointAnnotation class]]) { //根据注释点,创建并初始化注释点视图
BMKPinAnnotationView *newAnnotation = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"an"]; //设置大头针的颜色
newAnnotation.pinColor = BMKPinAnnotationColorRed; //设置动画
newAnnotation.animatesDrop = YES; return newAnnotation; } return nil;
}
/**
*当选中一个annotation views时,调用此接口
*@param mapView 地图View
*@param views 选中的annotation views
*/
- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view { //poi详情检索信息类
BMKPoiDetailSearchOption *option = [[BMKPoiDetailSearchOption alloc] init]; BMKPoiInfo *info = self.dataArray.firstObject; //poi的uid,从poi检索返回的BMKPoiResult结构中获取
option.poiUid = info.uid; /**
*根据poi uid 发起poi详情检索
*异步函数,返回结果在BMKPoiSearchDelegate的onGetPoiDetailResult通知
*@param option poi详情检索参数类(BMKPoiDetailSearchOption)
*@return 成功返回YES,否则返回NO
*/
BOOL flag = [self.poiSearch poiDetailSearch:option]; if (flag) {
NSLog(@"检索成功");
}
else { NSLog(@"检索失败");
} }

运行效果如下

注意:模拟器是有很多问题的,如果定位不了什么的,都是正常的

iOS百度地图简单使用的更多相关文章

  1. iOS百度地图简单使用详解

    iOS百度地图简单使用详解 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰 ...

  2. iOS百度地图SDK集成详细步骤

    1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本  ...

  3. IOS百度地图之--->第一篇《环境配置与基本使用》

    Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...

  4. Android 百度地图 简单实现--- 美食搜索

    Android 百度地图 简单实现---  美食 依赖包: 加入 Android 百度依赖包: 1  key:  <!--        开发人员 key --> <meta-dat ...

  5. IOS百度地图之--->第二篇《大头针__简单使用及自定义》

    呵呵!大家不要只看帖不回帖么,要不然我都没有积极性了. 第一步:创建一个用来呈现mapview的viewcontroller,不废话直接贴代码        BasicMapViewControlle ...

  6. iOS百度地图探索

    新建工程后,几项准备: 1.工程中一个文件设为.mm后缀 2.在Xcode的Project -> Edit Active Target -> Build -> Linking -&g ...

  7. iOS百度地图路径规划和POI检索详细总结-b

    路径规划.png 百度地图的使用 百度地图API的导入网上说了许多坑,不过我遇到的比较少,这里就放两个比较常见的吧.坑一: 奥联WIFI_xcodeproj.png 如上图所示,在infoplist里 ...

  8. iOS 百度地图截屏

    关于百度地图截屏的问题,发现不能用常用的方法进行载屏,常用的截屏方法所得到的图片地图瓦片底图会显示空白,网上给出的答案是这样的 :因为百度地图不是用UIKit实现的,所以得不到截图! 不过通过Open ...

  9. ios 百度地图,火星坐标,地球坐标互转

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

随机推荐

  1. .NET平台机器学习资源汇总,有你想要的么?

    接触机器学习1年多了,由于只会用C#堆代码,所以只关注.NET平台的资源,一边积累,一边收集,一边学习,所以在本站第101篇博客到来之际,分享给大家.部分用过的 ,会有稍微详细点的说明,其他没用过的, ...

  2. 一款开源免费跨浏览器的视频播放器--videojs使用介绍

    最近项目中的视频功能,需要做到浏览器全兼容,所以之前用html5实现的视频功能就需要进行改造了.在网上翻了个遍,试来试去,在所有的视频播放器中,就数它最实际了.首先我们来看看它的优点: 1.它是开源免 ...

  3. DDD 领域驱动设计-看我如何应对业务需求变化,领域模型调整?

    写在前面 上一篇:DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对? "愚蠢的应对",这个标题是我后来补充上的,博文中除了描述需求变化.愚蠢应对和一些思考,确实没有实质性 ...

  4. 关于有默认值的字段在用EF做插入操作时的思考(续)

    问题描述 今天下午(看现在这时间,应该是昨天下午了哈),园友 choon 写了这样一篇博文<关于有默认值的字段在用EF做插入操作时的思考>. 博文内容主要记录的是 choon 使用 EF ...

  5. C# 插入或删除word分页符

    C# 插入或删除word分页符 分页符是word中常用的一种分页的符号,它标志着上一页的结束和下一页的开始.在word中分页符有两种,一种是自动分页符,也叫软分页符,即一页数据写满以后转到下一页时wo ...

  6. C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。

    已搬迁至 http://www.cnblogs.com/linguanh/p/4543836.html

  7. iOS OC语言: Block底层实现原理

    先来简单介绍一下BlockBlock是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,Block可以在任何时候执行. Block和函数的相似性:(1)可以保存代码(2) ...

  8. C++运算符重载

    C++运算符重载 基本知识 重载的运算符是具有特殊名字的函数,他们的名字由关键字operator和其后要定义的运算符号共同组成. 运算符可以重载为成员函数和非成员函数.当一个重载的运算符是成员函数时, ...

  9. 【JUC】JDK1.8源码分析之ConcurrentHashMap(一)

    一.前言 最近几天忙着做点别的东西,今天终于有时间分析源码了,看源码感觉很爽,并且发现ConcurrentHashMap在JDK1.8版本与之前的版本在并发控制上存在很大的差别,很有必要进行认真的分析 ...

  10. jQuery实现checkbox的全选和反选

    $(function () { if ($(".chk_all")) { $(".chk_all").click(function () { $("i ...