• 百度地图集成--二


    参考官方文档 --> 申请秘钥 --> 配置开发环境 --> 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

     
  • 相关阅读:
    利用Bootstrap快速搭建个人响应式主页(附演示+源码)
    Socket实现仿QQ聊天(可部署于广域网)附源码(2)-服务器搭建
    Socket实现仿QQ聊天(可部署于广域网)附源码(1)-简介
    开拓思维,如何用编程思想进行三维建模(2)
    开拓思维,如何用编程思想进行三维建模(1)
    浅谈Winform事件的实现以及模拟其事件的实现(附实现源码)
    Winform实现Shp-栅格图形文件的读取与显示(外加shp转WKB格式存入oracle)附源码
    本地MVC项目发布到IIS服务器
    Asp.net mvc4 安装报错处理方法(x80070005 拒绝访)
    MySql 主从复制及主主复制
  • 原文地址:https://www.cnblogs.com/huangfang1314/p/5641760.html
Copyright © 2020-2023  润新知