iOS 百度地图实现模糊搜索和定位、跳转本机地图 下

来来来实现百度地图模糊搜索,先看一下效果

iOS 百度地图实现模糊搜索和定位、跳转本机地图 下_第1张图片
模糊搜索.gif

主要用到了BMKCitySearchOption这个城市内检索,下面我们来说一下实现过程

实现步骤

1.引入头文件,代理、协议,创建搜索全局属性和需要的属性

#import "TJMapAddressViewController.h"
#import "TJAddressTableIViewCell.h"
#import "TJAddressModel.h"

#import 
#import 


@interface TJMapAddressViewController ()

{
    
    BMKPoiSearch *_poiSearch;            //poi搜索
    
    BMKGeoCodeSearch  *_geocodesearch;   //geo搜索服务
    
}
@property (nonatomic,strong) UISearchBar *inputAddTF;//输入地址框

@property (nonatomic,strong) NSMutableArray *addressArray;//搜索的地址数组


@property (nonatomic , strong)UITableView *addressTableView;
@property (nonatomic , strong)NSMutableArray *dataArr;

@property (nonatomic,strong) TJAddressModel *model;

@property (nonatomic , strong)NSString *addressString;

/****
 <保存用户输入的地址信息>
 *****/
@property (nonatomic , strong)NSString *inPutAddressStr;

@end

2.设置取消代理

-(void)viewWillAppear:(BOOL)animated
{
     [super viewWillAppear:animated];
    _poiSearch.delegate = self;
    _geocodesearch.delegate = self;

}

    

-(void)viewWillDisappear:(BOOL)animated

{
    
    [super viewWillDisappear:animated];
    
    _poiSearch.delegate = nil; // 不用时,置nil
    
    _geocodesearch.delegate = nil;
    
}


3.实现代理方法

#pragma mark --------- poi 代理方法

-(void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult *)poiResult errorCode:(BMKSearchErrorCode)errorCode

{
    
    if(errorCode == BMK_SEARCH_NO_ERROR)
        
    {
/***
<这一步很重要,清空装载数据数组>
***/   
        self.addressArray = [NSMutableArray array];

        [self.addressArray removeAllObjects];

        
        for (BMKPoiInfo *info in poiResult.poiInfoList) {
            
            _model = [[TJAddressModel alloc] init];
            
            _model.titleStr = info.name;
            
            _model.detailStr = info.address;
                        
            [self.addressArray addObject:_model];
            
        }
        
        [self.addressTableView reloadData];
        
    }
    NSLog(@"self.addressArray === %@",self.addressArray);
}
搜索searchBar 的代理方法
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
    self.inPutAddressStr = searchText;
    NSLog(@"searchBarText === %@",self.inPutAddressStr);
    _poiSearch = [[BMKPoiSearch alloc]init];
    
    _poiSearch.delegate = self;
    
    BMKCitySearchOption *citySearchOption = [[BMKCitySearchOption alloc]init];
    
    citySearchOption.pageIndex = 0;
    
    citySearchOption.pageCapacity = 30;
    
    /***
     <此处的city属性需要定位城市传过来,我写了固定值>
     ***/
    citySearchOption.city= @"成都市";
    
    citySearchOption.keyword = searchText;
    
    BOOL flag = [_poiSearch poiSearchInCity:citySearchOption];
    
    if(flag)
        
    {
        
        NSLog(@"城市内检索发送成功");
        
    }
    
    else
        
    {
        
        NSLog(@"城市内检索发送失败");
        
    }
}


好了,基本的搜索功能就实现了 ,如果对我实现过程有什么疑问,可以留言
如果能帮到你,希望能给个赞,aqa去吃饭了

你可能感兴趣的:(iOS 百度地图实现模糊搜索和定位、跳转本机地图 下)