百度地图
导入代理方法
初始化-开启定位服务
调用代理方法获取经纬度
停止位置更新
利用经纬度使用搜索,搜索坐标获取位置代码
官方的集成介绍虽然很多,但是本人用到的比较少,除了基本库的导入 和在AppDelegate离 regist外 其他用到的比较少,至少获取当前地理位置的代码个人认为写的不够清楚。
这里主要介绍下如何开启定位,反编码地理坐标 和城市云搜索。
BMKLocationServiceDelegate, BMKGeoCodeSearchDelegate
首页导入上面的代理方法
其次开启百度定位服务
[BMKLocationServicesetLocationDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[BMKLocationServicesetLocationDistanceFilter: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 = [[BMKReverseGeoCodeOptionalloc]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(@"抱歉,未找到结果");}
}
以上为城市云搜索代码,其他热点搜索等大家可以参考百度地图开发者中心里的类参考 查找即可。如有疑问欢迎留言。
下一篇: 看一上传参数这个有关问题,小弟我不太明白