iOS - 百度地图集成

百度地图官方文档

1,配置

写主要写配置步骤,可以根据官方文档搭建的不再赘述

1.1 百度地图iOS SDK开发密钥的申请---用于授权

申请地址

1.2,安装CocoaPods

pod “BaiduMapKit”

1.3,OC环境配置

配置地址
pch配置头文件

 #import //引入base相关所有的头文件
 #import //引入地图功能所有的头文件
 #import //引入检索功能所有的头文件
 #import //引入云检索功能所有的头文件
 #import //引入定位功能所有的头文件
 #import //引入计算工具所有的头文件
 #import //引入周边雷达功能所有的头文件
 #import //只引入所需的单个头文件

1.4,plist文件配置

官方文档没说,但是需要配置的Bundle display name
调起百度地图客户端
LSApplicationQueriesSchemes

baidumap

1.5,定位配置

1)只允许前台使用时定位,需要在info.plist里添加:NSLocationWhenInUseUsageDescription

2)允许永久使用时定位,需要在info.plist里添加:NSLocationWhenInUseUsageDescription, NSLocationAlwaysUsageDescription,NSLocationAlwaysAndWhenInUseUsageDescription

2,使用

2.1 基本搭建

地址http://lbsyun.baidu.com/index.php?title=iossdk/guide/create-project/oc

2.2 地图类型

//标准地图
[_mapView setMapType:BMKMapTypeStandard];
//卫星地图
[_mapView setMapType:BMKMapTypeSatellite];
//空白地图
_mapView.mapType = BMKMapTypeNone;
//打开实时路况图层  
[_mapView setTrafficEnabled:YES];
//打开百度城市热力图图层(百度自有数据)
[_mapView setBaiduHeatMapEnabled:YES];

2.3定位

-(BMKLocationService *)locService
{
    if (!_locService) {
        _locService = [[BMKLocationService alloc]init];
        [self.locService startUserLocationService];
        _mapView.showsUserLocation = YES;//先打开显示的定位图层
        _mapView.userTrackingMode = BMKUserTrackingModeFollowWithHeading;//设置定位的状态
    }
    return _locService;
}
//开始定位
- (IBAction)startLocation:(id)sender {
    [self.locService startUserLocationService];
    _mapView.userTrackingMode = BMKUserTrackingModeFollowWithHeading;//设置定位的状态
}
#pragma mark BMKLocationServiceDelegate
//实现相关delegate 处理位置信息更新
//处理方向变更信息
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
    [_mapView updateLocationData:userLocation];
}
//处理位置坐标更新
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
    [_mapView updateLocationData:userLocation];
}

注意:
1,只有_mapView.userTrackingMode = BMKUserTrackingModeFollowWithHeading 或者BMKUserTrackingModeFollow才会自动跳转到用户的位置

2.4改变地图缩放等级

地图的缩放级别的范围是[3-19],调用MBKMapView的setZoomLevel方法设置地图的缩放级别,用来缩放地图,越大越详细。示例代码如下:

 [_mapView setZoomLevel:17.5];

2.5地图刷新回调

可能会遇到需要判断是否要刷新地图的需求,这时需要一个变量来判断是否需要重新加载地图数据。比如滑动卡片和地图标注点联动,滑动卡片时将对应标注点将移动到地图中间,此时不刷新地图,移动地图时再刷新地图。这里不能使用给地图添加拖动手势的方法,地图会变卡。
使用每次滑动卡片时都将flag设置为NO,让后将标注点移动到地图中间,之后将会调用地图刷新方法,这里判断变量是否为NO,如果为no,就将变量设置为yes并返回,本次不刷新地图,下一次就会刷新地图,除非再次滑动卡片设置为no了

-(void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{

    if(self.isNeedReloadMap == NO)
    {
        self.isNeedReloadMap = YES;
        return;
    }
    if (self.isNeedReloadMap) {
//刷新地图要做的事
  }
}

github地址:https://github.com/CDLOG/baiduMapdemo

你可能感兴趣的:(iOS - 百度地图集成)