您的位置:首页 > 移动开发 > IOS开发

Xcode 7.0以后 iOS 9.0以后 最新百度地图 详细使用

2015-12-05 15:40 477 查看
有网友碰到过这样的问题:Xcode 7.0以后 iOS 9.0以后 最新百度地图 详细使用 - 他们都叫我梁子,问题详细内容为:挺不错的博文:Xcode 7.0以后 iOS 9.0以后 最新百度地图 详细使用 - 他们都叫我梁子,我搜你通过互联网收集了相关的一些解决方案,希望对有过相同或者相似问题的网友提供帮助,具体如下:

具体的集成方法 直接官方文档就好了 这里只做 使用说明:

如果集成没有问题 那么跟着我的以下步骤做 绝对没有问题:(在这里说明一下 我把 定位和地图 分块写出来的这样比较清晰)

1.appDelegate 倒入头文件 定义百度管理者属性属性

@property (strong, nonatomic) BMKMapManager *mapManager;

并在启动方法中实现方法

#import <BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  #pragma mark - 百度地图

// 要使用百度地图,请先启动BaiduMapManager

_mapManager = [[BMKMapManager alloc]init];

// 如果要关注网络及授权验证事件,请设定 generalDelegate参数

BOOL ret = [_mapManager start:@"SjoQXduG5ibrPCHn4PfZy87p" generalDelegate:nil]; // 蓝色部分替换你自己的key

if (!ret) {

NSLog(@"百度地图管理者 启动失败");

}

}

2.在要使用地图的类中 倒入头文件 进行使用百度地图的功能

#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件

#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件

#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件

#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入计算工具所有的头文件

#import <BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件

3.调用方法是用 直接贴代码注释很详细

@interface MapLawDetailViewController () <BMKMapViewDelegate, BMKLocationServiceDelegate>

/**

* 百度地图

*/

@property (strong, nonatomic) BMKMapView *mapView;

/**

* 定为服务

*/

@property (strong, nonatomic) BMKLocationService *locService;

@end

@implementation MapLawDetailViewController

- (void)viewDidLoad {

[super viewDidLoad];

// 启动定位

[self locService];

// 显示地图

[self.view addSubview:self.mapView];

}

#pragma mark - 定位功能------------------------------------

- (BMKLocationService *)locService {

if (_locService == nil) {

_locService = [[BMKLocationService alloc]init];

_locService.delegate = self;

_locService.distanceFilter = 100.f;

// 后台也定位 并且屏幕上方有蓝条提示

_locService.allowsBackgroundLocationUpdates = YES;

//启动LocationService

[_locService startUserLocationService];

}

return _locService;

}

//实现相关delegate 处理位置信息更新

//处理位置坐标更新

- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

{

// 1.显示用户位置

self.mapView.showsUserLocation = YES;

// 2.更新用户最新位置到地图上

[self.mapView updateLocationData:userLocation];

// 3.设置中心 为 用户位置

CLLocationCoordinate2D center = userLocation.location.coordinate;

CLLocationDegrees latitude = 0.5;

CLLocationDegrees longitude = 0.5;

// 4.设置跨度 数值越小 越精确

BMKCoordinateSpan span = BMKCoordinateSpanMake(latitude, longitude);

// 5.设置区域 中心店 和 范围跨度

BMKCoordinateRegion region = BMKCoordinateRegionMake(center, span);

// 设置地图显示区域范围

[self.mapView setRegion:region animated:YES];

}

#pragma mark - 地图功能-------------------------------------------

- (BMKMapView *)mapView {

if (_mapView == nil) {

_mapView = [[BMKMapView alloc]initWithFrame:self.view.bounds];

}

return _mapView;

}

- (void)viewWillAppear:(BOOL)animated

{

[self.mapView viewWillAppear];

self.mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放

}

- (void)viewWillDisappear:(BOOL)animated

{

[self.mapView viewWillDisappear];

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

}

- (void)viewDidAppear:(BOOL)animated {

// 添加一个PointAnnotation模型

BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];

CLLocationCoordinate2D coor; // 定义模型经纬度

coor.latitude = 39.915;

coor.longitude = 116.404;

annotation.coordinate = coor;

annotation.title = @"这里是北京";

[_mapView addAnnotation:annotation];

}

// Override每当添加一个大头针就会调用这个方法(对大头针没有进行封装)

- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation {

// 这里的BMKAnnotationView 就相当于是UITableViewCell一样 其实就是一个View我们也是通过复用的样子一样进行使用。 而传进来的annotation 就是一个模型,它里面装的全都是数据!

if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {

// 如果大头针类型 是我们自定义的百度的 而且是后加的大头针模型类 的话 才执行

static NSString *const ID = @"myAnnotation";

BMKPinAnnotationView *newAnnotationView = (BMKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];

if (newAnnotationView == nil) {

newAnnotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:ID];

}

newAnnotationView.pinColor = BMKPinAnnotationColorPurple;

newAnnotationView.animatesDrop = YES; // 设置该标注点动画显示

newAnnotationView.image = [UIImage imageNamed:@"marker"];

return newAnnotationView;

}

// 这里是说定位自己本身的那个大头针模型 返回nil 自动就变成蓝色点点

return nil;

}



总结:百度地图是用很方便,相对于之前的版本,废弃了一些api 这样更简单易用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: