浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

iOS 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

POI检索简介

POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。

百度地图SDK提供三种类型的POI检索:周边检索、区域检索和城市内检索。下面将以POI城市内检索、周边检索和区域检索为例,向大家介绍如何使用检索服务。

注意:关键字未设置城市信息(默认为全国搜索)时,如果涉及多个城市数据返回,仅会返回建议城市,请根据APP需求,选取城市进行搜索。

POI城市内检索

根据关键字检索适用于在某个城市搜索某个名称相关的POI,例如:查找北京市的“小吃”。

     
-(void)viewDidLoad 
{
     //初始化搜索对象 ,并设置代理
    _searcher =[[BMKPoiSearch alloc]init];  
    _searcher.delegate = self;  
    //请求参数类BMKCitySearchOption
    BMKCitySearchOption *citySearchOption = [[BMKCitySearchOption alloc]init];
    citySearchOption.pageIndex = curPage;
    citySearchOption.pageCapacity = 10;
    citySearchOption.city= @"北京";
    citySearchOption.keyword = @"小吃";
    //发起城市内POI检索
    BOOL flag = [_searcher poiSearchInCity:citySearchOption];
    if(flag) {
               NSLog(@"城市内检索发送成功");
              }
    else {
          NSLog(@"城市内检索发送失败");
          }
}
//实现PoiSearchDeleage处理回调结果  
 - (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error  
 {  
    if (error == BMK_SEARCH_NO_ERROR) {  
        //在此处理正常结果   
    }  
    else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){  
         //当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表  
         // result.cityList;  
         NSLog(@"起始点有歧义");  
         } 
         else {  
            NSLog(@"抱歉,未找到结果");  
            }  
 }  
//不使用时将delegate设置为 nil    
-(void)viewWillDisappear:(BOOL)animated    
{    
     _searcher.delegate = nil;    
}

POI周边检索

周边搜索是一个圆形范围,适用于以某个位置为中心点,自定义检索半径值,搜索某个位置附近的POI。

    
-(void)viewDidLoad  
{    
    //初始化检索对象  
    _searcher =[[BMKPoiSearch alloc]init];  
    _searcher.delegate = self;    
    //发起检索  
    BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc]init];  
    option.pageIndex = curPage;  
    option.pageCapacity = 10;
    option.location = CLLocationCoordinate2D{39.915, 116.404};
    option.keyword = @"小吃";  
    BOOL flag = [_searcher poiSearchNearBy:option];  
    [option release];  
    if(flag)  
    {  
        NSLog(@"周边检索发送成功");  
    }  
    else  
    {  
        NSLog(@"周边检索发送失败");  
    }  
 }  
 //实现PoiSearchDeleage处理回调结果  
 - (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error  
 {  
    if (error == BMK_SEARCH_NO_ERROR) {  
        //在此处理正常结果   
    }  
    else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){  
         //当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表  
         // result.cityList;  
         NSLog(@"起始点有歧义");  
    } else {  
         NSLog(@"抱歉,未找到结果");  
    }  
}  
//不使用时将delegate设置为 nil    
-(void)viewWillDisappear:(BOOL)animated    
{    
     _searcher.delegate = nil;    
}

POI区域检索

POI区域检索,是在指定的绘制的矩形范围内(依据左下角坐标和右上角坐标绘制的矩形范围),检索POI。

     //初始化搜索对象,并设置代理
    _searcher =[[BMKPoiSearch alloc]init];
    _searcher.delegate = self;
    //请求参数类BMKBoundSearchOption
    BMKBoundSearchOption *boundsOption = [[BMKBoundSearchOption alloc] init];
    boundsOption.leftBottom = CLLocationCoordinate2DMake(40.047722, 116.31327);
    boundsOption.rightTop = CLLocationCoordinate2DMake(40.057284, 116.34351);
    boundsOption.keyword = @"小吃";
    //发起范围内POI检索检索
    BOOL flag = [_searcher poiSearchInbounds:boundsOption];
    if(flag) {
        NSLog(@"区域内POI检索发送成功");
    }
    else {
        NSLog(@"区域内POI检索发送失败");
    }
//实现PoiSearchDeleage处理回调结果  
 - (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error  
 {  
    if (error == BMK_SEARCH_NO_ERROR) {  
        //在此处理正常结果   
    }  
    else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){  
         //当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表  
         // result.cityList;  
         NSLog(@"起始点有歧义");  
    } else {  
         NSLog(@"抱歉,未找到结果");  
    }  
}  
//不使用时将delegate设置为 nil    
-(void)viewWillDisappear:(BOOL)animated    
{    
     _searcher.delegate = nil;    
}

POI详情

POI详情服务提供查询单个POI的详情信息,比如好评、门店营业时间等。

POI详情检索的实现方式如下:

1 发起检索:
//初始化检索服务
_poisearch = [[BMKPoiSearch alloc] init];
_poisearch.delegate = self;
//POI详情检索
BMKPoiDetailSearchOption* option = [[BMKPoiDetailSearchOption alloc] init];
option.poiUid = @”此处为POI的uid”;//POI搜索结果中获取的uid
BOOL flag = [_poisearch poiDetailSearch:option];
[option release];
if(flag)
{
    //详情检索发起成功
}
else
{
    //详情检索发送失败
}

2 设置结果监听:

-(void)onGetPoiDetailResult:(BMKPoiSearch *)searcher result:(BMKPoiDetailResult *)poiDetailResult errorCode:(BMKSearchErrorCode)errorCode
{
if(errorCode == BMK_SEARCH_NO_ERROR){
//在此处理正常结果   
}
}