您的位置:首页 > 其它

百度地图集成步骤

2016-07-25 23:14 351 查看
集成步骤按照官方文档也可实现,我这里再写一遍。

第一步、导入
.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息