百度地图集成步骤

集成步骤按照官方文档也可实现,我这里再写一遍。
第一步、导入.framework包,格式为BaiduMapAPI_**.framework,其中BaiduMapAPI_Base.framework为基础包
第二步、引入所需的系统库,下图中红色圈起来的为2.9.0版本后需要加入的
需要的系统库
第三步、在other Linker Flag 添加-ObjC
第四步、引入mapapi.bundle资源文件
  如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。
  方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI_Map.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

然后,就可以去写代码了。
同样,要首先去初始化BMKMapManager,并填上申请的key

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 启动
    self.mapManager = [BMKMapManager new];
    BOOL ret = [self.mapManager start:@"你的key" generalDelegate:nil];
    if (!ret)
    {
        NSLog(@"失败");
    }

    return YES;
}

然后在去- (void)viewDidLoad初始化地图

// 初始化地图
    self.mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 100)];
    [self.view addSubview:self.mapView];
- (void)viewWillAppear:(BOOL)animated    
{    
    [_mapView viewWillAppear];    
    _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放    
}    
- (void)viewWillDisappear:(BOOL)animated    
{    
    [_mapView viewWillDisappear];    
      _mapView.delegate = nil; // 不用时,置nil    
}

运行一下,如果能出现地图,这就成功咯。
如果打印manager start failed : info.plist 中必须添加 Bundle display name说明在Info.plist里面少Bundle display name,这个东西作用是设置程序安装后显示的名称。应⽤程序名称限制在10-12个字符,如果超出,将被显示缩写名称。添加上就行。

接下来要说下编码反编码。
地理编码指的是将地址信息建立空间坐标关系的过程。又可分为正向地理编码和反向地理编码。
正向地理编码指的是由地址信息转换为坐标点的过程。
反向地理编码服务实现了将地球表面的地址坐标转换为标准地址的过程。
首先要初始化检索对象

self.search = [[BMKGeoCodeSearch alloc] init];
self.search.delegate = self;

geo检索

BMKGeoCodeSearchOption *option = [[BMKGeoCodeSearchOption alloc]init];
    option.address = @"石家庄海悦天地";
    BOOL flag = [self.search geoCode:option];
    if (flag)
    {
        NSLog(@"检索成功");
    }
    else
    {
        NSLog(@"检索失败");
    }

接收正向编码的delegate

//实现Deleage处理回调结果
//接收正向编码结果
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
    if (error == BMK_SEARCH_NO_ERROR) {
        //在此处理正常结果  添加显示大头针
        BMKPointAnnotation *annotation = [[BMKPointAnnotation alloc]init];
        CLLocationCoordinate2D coor;
        coor.latitude = self.userLat;
        coor.longitude = self.userLong;
        annotation.coordinate = coor;
        annotation.title = @"这里是石家庄";
        [_mapView addAnnotation:annotation];
    }
    else {
        NSLog(@"抱歉,未找到结果");
    }
}

下面是反向地理编码检索

    // 用户经度
    self.userLong = [self.longTF.text doubleValue];
    // 用户纬度
    self.userLat = [self.latTF.text doubleValue];
    self.search = [[BMKGeoCodeSearch alloc] init];
    self.search.delegate = self;
    //发起反向地理编码检索
    CLLocationCoordinate2D pt = (CLLocationCoordinate2D){self.userLong, self.userLat};
    BMKReverseGeoCodeOption *reverseGeoCodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
    reverseGeoCodeSearchOption.reverseGeoPoint = pt;
    BOOL flag = [_search reverseGeoCode:reverseGeoCodeSearchOption];
    if(flag)
    {
        NSLog(@"反geo检索发送成功");
        // 添加一个大头针显示
        BMKPointAnnotation *annotation = [[BMKPointAnnotation alloc]init];
        CLLocationCoordinate2D coor;
        coor.latitude = self.userLat;
        coor.longitude = self.userLong;
        annotation.coordinate = coor;
        annotation.title = @"这里是北京";
        [_mapView addAnnotation:annotation];
    }
    else
    {
      NSLog(@"反geo检索发送失败");
    }

反geo检索delegate

//接收反向地理编码结果
-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)resulterrorCode:(BMKSearchErrorCode)error{
    if (error == BMK_SEARCH_NO_ERROR) {
//      在此处理正常结果
    }
    else {
        NSLog(@"抱歉,未找到结果");
    }
}

到这,基本上就完成了,其他的一些小功能,可以参照着文档来实现,都挺简单的。有不对的地方还请指出来。
另外,附上我自己的Demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值