iOS百度地图开发笔记(一)

1.参考百度地图API官网

http://developer.baidu.com/map/sdkiosdev-2.htm

2.导入头文件,库文件,资源文件,和framework

详情见官网说明

我在引入库文件的时候使用的是百度提供的第二种方法,第三种方法测试过但未成功。

注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++"

如果使用Xcode5开发基于iOS7的百度地图应用时,请将Xcode5的Project -> Edit Active Target -> Build -> Linking -> Other Linker Flags中的“-ObjC”修改为“-all_load”

3.在需要使用百度地图的视图控制类中要执行如下操作

#import "BMapKit.h"

4.添加视图view及相关设置

    mapView = [[BMKMapView alloc]initWithFrame:self.view.bounds];
    //设置地图旋转角度
    //mapView.rotation = 90;
    //设置地图俯视角度
    //mapView.overlooking = -30;
    //设置地图事件的回调协议,若不加入此句则不会发生回调
    mapView.delegate = self;
    //打开实时路况图层
    [mapView setMapType:BMKMapTypeTrafficOn];
    //关闭实时路况图层
    //[mapView setMapType:BMKMapTypeStandard];
    //设置按钮,添加点击定位事件
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(270, 65, 50, 50);
    [btn setTitle:@"定位" forState:UIControlStateNormal] ;
    [btn addTarget:self action:@selector(locateSelf:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:mapView];
    [self.view addSubview:btn];
	/**
 	*点中底图标注后会回调此接口
 	*@param mapview 地图View
 	*@param mapPoi 标注点信息
 	*/
	- (void)mapView:(BMKMapView *)mapView onClickedMapPoi:(BMKMapPoi*)mapPoi
	{
 	   NSLog(@"%@",mapPoi.text);
	}



5.定位功能的实现

注:实现定位功能回调必须实现bmkmapviewdalegate协议

mapView.delegate = self;

相关回调:

/*定位调用函数
 将要启动定位调用mapViewWillStartLocatingUser
 定位成功后,调用didUpdateUserLocation
 停止定位后,调用mapViewDidStopLocatingUser
 定位失败,调用didFailToLocateUserWithError
*/
-(void)locateSelf:(id)sender
{
    //先将地图定位图层还原默认
    mapView.showsUserLocation = NO;
    /*  设置userTrackingMode
     BMKUserTrackingModeNone = 0,             /// 普通定位模式
     BMKUserTrackingModeFollow,               /// 定位跟随模式
     BMKUserTrackingModeFollowWithHeading,    /// 定位罗盘模式
     */
    mapView.userTrackingMode = BMKUserTrackingModeFollowWithHeading;
    //设置地图定位图层
    mapView.showsUserLocation = YES;
}

/**
 *在地图View将要启动定位时,会调用此函数
 *@param mapView 地图View
 */
- (void)mapViewWillStartLocatingUser:(BMKMapView *)mapView
{
	NSLog(@"start locate");
}

/**
 *用户位置更新后,会调用此函数
 *@param mapView 地图View
 *@param userLocation 新的用户位置
 */

- (void)mapView:(BMKMapView *)mapView didUpdateUserLocation:(BMKUserLocation *)userLocation
{
	if (userLocation != nil) {
		NSLog(@"%f %f", userLocation.location.coordinate.latitude, userLocation.location.coordinate.longitude);
	}
}

/**
 *在地图View停止定位后,会调用此函数
 *@param mapView 地图View
 */
- (void)mapViewDidStopLocatingUser:(BMKMapView *)mapView
{
    NSLog(@"stop locate");
}

/**
 *定位失败后,会调用此函数
 *@param mapView 地图View
 *@param error 错误号,参考CLError.h中定义的错误号
 */
- (void)mapView:(BMKMapView *)mapView didFailToLocateUserWithError:(NSError *)error
{
    NSLog(@"location error%@",error);
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值