iOS 百度地图SDK使用小结

官方的集成介绍虽然很多,但是本人 用到的比较少,除了基本库的导入 和在AppDelegate离 regist外 其他用到的比较少,至少获取当前地理位置的代码 个人认为写的不够清除。


这里主要介绍下如何开启定位,反编码地理坐标 和城市云搜索。


BMKLocationServiceDelegate, BMKGeoCodeSearchDelegate


首页导入上面的代理方法

其次开启百度定位服务

 [BMKLocationService setLocationDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];

    [BMKLocationService setLocationDistanceFilter:kCLLocationAccuracyBest];

    

    //初始化BMKLocationService

    _locService = [[BMKLocationService alloc]init];

    _locService.delegate = self;

    //启动LocationService

    [_locService startUserLocationService];

调用代理方法会获取当前经纬度,获得经纬后 使用搜索 搜索坐标

- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

{


    NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

    // 建议获取完经纬后停止位置更新  否则会一直更新坐标

    if (userLocation.location.coordinate.latitude != 0) {

        [_locService stopUserLocationService];

    }

    //调用搜索

    BMKGeoCodeSearch *search = [[BMKGeoCodeSearch alloc]init];

    search.delegate = self;

    BMKReverseGeoCodeOption *rever = [[BMKReverseGeoCodeOption alloc]init];

    rever.reverseGeoPoint = userLocation.location.coordinate;

    //这段代码不要删

    NSLog(@"%d",[search reverseGeoCode:rever]);

}

搜索代理方法里就能返回具体地址了

#pragma mark GeoCodeResult 返回地理位置

-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error

{

    NSLog(@"%@",result.address);

}



以上就是获取当前地理位置的代码。



云搜索这块我是在使用系统正常的SearchBar,在它的代理方法里触发云搜索 导入代理

BMKGeoCodeSearchDelegate, BMKLocationServiceDelegate, BMKPoiSearchDelegate


- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

{

    //初始化poi搜索

    _poiSearch = [[BMKPoiSearch alloc]init];

    _poiSearch.delegate = self;

    

    BMKCitySearchOption *option = [[BMKCitySearchOption alloc]init];

    option.city = @"北京市";

    _searchTextFiled.placeholder = @"请输入要切换的地址";

    option.keyword = _searchTextFiled.text;

    BOOL flag = [_poiSearch poiSearchInCity:option];

    if(flag)

    {

//        NSLog(@"周边检索发送成功");

    }

    else

    {

//        NSLog(@"周边检索发送失败");

    }


}

- (void)onGetPoiResult:(BMKPoiSearch*)searcher

                result:(BMKPoiResult*)poiResultList

             errorCode:(BMKSearchErrorCode)error

{

    if (error == BMK_SEARCH_NO_ERROR) {

        //在此处理正常结果  poiResultList.totalPoiNum, poiResultList.poiInfoList 这两个分别代表搜索结果数量和存地址信息的数组, forin 遍历poiResultList.poiInfoList这个数组即可


        NSLog(@"%d %@", poiResultList.totalPoiNum, poiResultList.poiInfoList);

        NSArray *array = poiResultList.poiInfoList;

                

    }

    else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){

        //当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表

        // result.cityList;

        NSLog(@"起始点有歧义");

    } else {

        NSLog(@"抱歉,未找到结果");

        

    }

}

以上为城市云搜索代码,其他热点搜索等大家可以参考百度地图开发者中心里的类参考 查找即可。

如有疑问欢迎留言。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。