百度地图集成简单来说分为4个步骤:
- 获取授权
- 添加地图
- 获取POI搜索结果
- 根据搜索结果添加大头针
下面我们来实际操作下:
- 在百度地图开放平台注册一个应用生成一个APPKey
- 通过APPKey获取授权(在程序入口)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 要使用百度地图,请先启动BaiduMapManager
_mapManager = [[BMKMapManager alloc]init];
BOOL ret = [_mapManager start:@"zFXgy83tLMTrfEUGbckigm1G" generalDelegate:self];
if (!ret) {
NSLog(@"manager start failed!");
}
return YES;
}
- 添加地图到界面上 BMKMapView
BMKMapView *mapView = [[BMKMapView alloc]initWithFrame:self.view.bounds];
//依赖地图
self.mapView = mapView;
[self.view addSubview:mapView];
- 拿POI搜索的结果 BMKPoiSearch
- (void)click:(UIButton *)btn
{
//3.拿poi搜索的结果
BMKCitySearchOption *option = [[BMKCitySearchOption alloc]init];
option.city = @"北京";
option.keyword = @"KTV";
option.pageIndex = 1;
option.pageCapacity = 50;
BOOL success = [self.poisearch poiSearchInCity:option];
if (success) {
NSLog(@"检索成功!");
}else{
NSLog(@"检索失败!");
}
}
// 想要拿到搜索结果需要设置代理
-(void)viewWillAppear:(BOOL)animated {
[_mapView viewWillAppear];
_mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放
self.poisearch.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放
}
-(void)viewWillDisappear:(BOOL)animated {
[_mapView viewWillDisappear];
_mapView.delegate = nil; // 不用时,置nil
_poisearch.delegate = nil; // 不用时,置nil
}
- 根据结果添加大头针
// 检索结果通过代理告知外界
- (void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult *)poiResult errorCode:(BMKSearchErrorCode)errorCode
{
for (BMKPointAnnotation *anno1 in self.mapView.annotations ) {
[self.mapView removeAnnotation:anno1];
}
for (BMKPoiInfo *poiinfo in poiResult.poiInfoList) {
NSLog(@"%@",poiinfo.name);
//创建大头针模型
BMKPointAnnotation *anno = [[BMKPointAnnotation alloc]init];
anno.title = poiinfo.name;
anno.subtitle = poiinfo.address;
anno.coordinate = poiinfo.pt;
//添加大头针模型
[self.mapView addAnnotation:anno];
}
}