百度地图集成--二

参考官方文档 --> 申请秘钥 --> 配置开发环境 --> Hello BaiduMap --> 注意事项

--> 注意Bundle ID(官方文档没有提示)

先创建一个百度地图文件  进行如下操作

在使用SDK的类 按需 引入下边的头文件:(appdelegte 中  和 viewController 中分别导入以下头文件)

#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>//只引入所需的单个头文件


#import "ViewController.h"

#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>//只引入所需的单个头文件

@interface ViewController ()<BMKMapViewDelegate, BMKPoiSearchDelegate>
{
    BMKMapView *_mapView;
    
    BMKPoiSearch *_searcher;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //1. 创建百度地图
    _mapView = [[BMKMapView alloc]init];
    self.view = _mapView;
    
    //2. 切换为卫星图
    //[_mapView setMapType:BMKMapTypeSatellite];
    
    //3. 添加一个PointAnnotation
    BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
    CLLocationCoordinate2D coor;
    coor.latitude = 39.915;
    coor.longitude = 116.404;
    annotation.coordinate = coor;
    annotation.title = @"这里是北京";
    [_mapView addAnnotation:annotation];
    
    //4.POI检索代码
    [self performSelector:@selector(poiSearch) withObject:nil afterDelay:2];
    
    //5.设置地图显示层级 3最大, 20最小
    [_mapView setZoomLevel:16];
    
}

#pragma mark POI检索代码
- (void)poiSearch
{
    //1. 初始化检索对象
    _searcher =[[BMKPoiSearch alloc]init];
    _searcher.delegate = self;
    
    //2. 发起检索 --> 拼接参数
    BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc]init];
    //分页索引,可选,默认为0
    option.pageIndex = 0;
    //分页数量,可选,默认为10,最多为50
    option.pageCapacity = 10;
    
    option.location = CLLocationCoordinate2DMake(39.915, 116.404);
    option.keyword = @"小吃";
    
    BOOL flag = [_searcher poiSearchNearBy:option];
    if(flag)
    {
        NSLog(@"周边检索发送成功");
    }
    else
    {
        NSLog(@"周边检索发送失败");
    }
    
}

//实现PoiSearchDeleage处理回调结果
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error
{
    if (error == BMK_SEARCH_NO_ERROR) {
        //在此处理正常结果
        
        // 添加大头针 / 显示一个列表给用户
        
        for (BMKPoiInfo *poiInfo in poiResultList.poiInfoList) {
            
            BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
            annotation.coordinate = poiInfo.pt;
            annotation.title = poiInfo.name;
            [_mapView addAnnotation:annotation];
        }
        
        
    }
    else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){
        //当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表
        // result.cityList;
        NSLog(@"起始点有歧义");
    } else {
        NSLog(@"error: %zd",error);
        NSLog(@"抱歉,未找到结果");
    }
}


- (void)viewWillAppear:(BOOL)animated
{
    [_mapView viewWillAppear];
    _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放
}

- (void)viewWillDisappear:(BOOL)animated
{
    [_mapView viewWillDisappear];
    _mapView.delegate = nil; // 不用时,置nil
    _searcher.delegate = nil; //不使用时将delegate设置为 nil
}

@end

 
原文地址:https://www.cnblogs.com/huangfang1314/p/5641760.html