iOS 百度地图开发集成使用

项目需要集成百度地图,那么关于如何集成百度地图的事,就自己去百度开放平台查看文档吧,这是非常简单的事,在这里就不多说了。

那么下面我就说说我在这个demo里所做的事。

首先,项目需要具备定位及计算两地的距离

其次,项目需要根据两个地点来拿到所有路线,并且可根据不同的策略拿到对应的最佳路线。

最后,需要拿到打车相关信息


那么这里我就自己写了一个单例类,这是在内部处理所有的代理,外部可以非常方便地调用,如果有好的建议,请在评论中赐教,谢谢!

//
//  HYBBaiduMapHelper.h
//  BaiduMapDemo
//
//  Created by 黄仪标 on 14/11/18.
//  Copyright (c) 2014年 黄仪标. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BMapKit.h"

typedef void (^HYBUserLocationCompletion)(BMKUserLocation *userLocation);
typedef void (^HYBRouteSearchCompletion)(BMKTransitRouteResult *result);

/*!
 * @brief 百度地图相关API操作类
 *
 * @author huangyibiao
 */
@interface HYBBaiduMapHelper : NSObject

+ (HYBBaiduMapHelper *)shared;

///
/// 该方法在appdelegate的调用,在应用启动时,请求授权百度地图
- (BOOL)startWithAppKey:(NSString *)appKey;

///
/// 下面的几个方法是定位使用
- (void)locateInView:(UIView *)mapSuerView
               frame:(CGRect)frame
      withCompletion:(HYBUserLocationCompletion)completion;
- (void)viewWillAppear;
- (void)viewWillDisappear;
- (void)viewDidDeallocOrReceiveMemoryWarning;

///
/// 下面的方法是计算两地的距离
/// 返回距离单位为米
- (CLLocationDistance)distanceWithStartPoint:(CLLocationCoordinate2D)startPoint
                                    endPoint:(CLLocationCoordinate2D)endPoint;

///
/// 下面的方法是路线规划获取操作
/// 注意:不能同时调用下面的这三个方法,必须是先调用完一个,返回结果后,再继续调用别的,否则会覆盖前一个操作的数据

/// 公交检索方法
/// 前两个参数,分别表示起点和终点的位置名称
/// 第三个参数,表示在哪个城市里检索
- (void)transitRouteSearchFrom:(BMKPlanNode *)startNode
                            to:(BMKPlanNode *)endNode
                          city:(NSString *)city
                 transitPolicy:(BMKTransitPolicy)transitPolicy
                    completion:(HYBRouteSearchCompletion)completion;

/// 驾乘检索方法
/// 前两个参数,分别表示起点和终点的位置名称
- (void)driveRouteSearchFrom:(BMKPlanNode *)startNode
                          to:(BMKPlanNode *)endNode
                 drivePolicy:(BMKDrivingPolicy)drivePolicy
                  completion:(HYBRouteSearchCompletion)completion;

/// 步行检索方法
/// 前两个参数,分别表示起点和终点的位置名称
- (void)walkRouteSearchFrom:(BMKPlanNode *)startNode
                         to:(BMKPlanNode *)endNode
                 completion:(HYBRouteSearchCompletion)completion;

@end

//
//  HYBBaiduMapHelper.m
//  BaiduMapDemo
//
//  Created by 黄仪标 on 14/11/18.
//  Copyright (c) 2014年 黄仪标. All rights reserved.
//

#import "HYBBaiduMapHelper.h"

@interface HYBBaiduMapHelper () <BMKLocationServiceDelegate,
BMKGeneralDelegate,
BMKMapViewDelegate,
BMKRouteSearchDelegate> {
  BMKMapManager             *_mapManager;
  HYBUserLocationCompletion _locationCompletion;
  HYBRouteSearchCompletion  _routeSearchCompletion;
  BMKMapView                *_mapView;
  BMKLocationService        *_locationService;
  BMKRouteSearch            *_routeSearch;
}

@end

@implementation HYBBaiduMapHelper

+ (HYBBaiduMapHelper *)shared {
  static HYBBaiduMapHelper *baiduMapHelper = nil;
  static dispatch_once_t onceToken = 0;
  
  dispatch_once(&onceToken, ^{
    if (!baiduMapHelper) {
      baiduMapHelper = [[[self class] alloc] init];
    }
  });
  
  return baiduMapHelper;
}

- (instancetype)init {
  if (self = [super init]) {
    _mapManager = [[BMKMapManager alloc] init];
  }
  
  return self;
}

- (BOOL)startWithAppKey:(NSString *)appKey {
  if (![appKey isKindOfClass:[NSString class]] || appKey.length == 0 || appKey == nil) {
    return NO;
  }
  
  return [_mapManager start:appKey generalDelegate:self];
}

- (void)locateInView:(UIVi
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值