iOS_SN_地图的使用(2)
上一篇讲的是地图的基本使用,和注意事项,这一篇主要讲POI检索。百度地图SDK提供三种类型的POI检索:周边检索、区域检索和城市内检索。下面将以周边检索为例,向大家介绍如何使用检索服务。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view. self.mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, kwidth, kheigth)];
[self.mapView setZoomLevel:16];
[self.view addSubview:self.mapView];
// BMKPoiResult //1. 初始化检索对象
_searcher =[[BMKPoiSearch alloc]init];
_searcher.delegate = self; //2. 发起检索 --> 拼接参数
BMKNearbySearchOption *option = [[BMKNearbySearchOption alloc]init];
//分页索引,可选,默认为0
option.pageIndex = 0;
//分页数量,可选,默认为10,最多为50
option.pageCapacity = 10; option.location = CLLocationCoordinate2DMake(39.915, 116.404);
option.keyword = @"停车场"; BOOL flag = [_searcher poiSearchNearBy:option];
if(flag)
{
NSLog(@"周边检索发送成功");
}
else
{
NSLog(@"周边检索发送失败");
}
}
检索结果在代理中
//实现PoiSearchDeleage处理回调结果
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error
然后就是基于基本检索的详情检索要在上面一个方法的代理中实现详情检索,
- (void)onGetPoiResult:(BMKPoiSearch*)searcher result:(BMKPoiResult*)poiResultList errorCode:(BMKSearchErrorCode)error
{
if (error == BMK_SEARCH_NO_ERROR) {
//在此处理正常结果 //初始化检索服务
_poisearch = [[BMKPoiSearch alloc] init];
_poisearch.delegate = self;
//POI详情检索
BMKPoiDetailSearchOption* option = [[BMKPoiDetailSearchOption alloc] init]; for (BMKPoiInfo *poiInfo in poiResultList.poiInfoList) { NSString *uids = poiInfo.uid;
option.poiUid = uids; } BOOL flag = [_poisearch poiDetailSearch:option];
if(flag)
{
//详情检索发起成功
NSLog(@"%@",@"详情检索发起成功");
}
else
{
//详情检索发送失败
NSLog(@"%@",@"详情检索发送失败");
} // 添加大头针 / 显示一个列表给用户
for (BMKPoiInfo *poiInfo in poiResultList.poiInfoList) {
BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];
annotation.coordinate = poiInfo.pt;
annotation.title = poiInfo.name;
[self.mapView addAnnotation:annotation];
} } else if (error == BMK_SEARCH_AMBIGUOUS_KEYWORD){
//当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表
// result.cityList;
NSLog(@"起始点有歧义");
} else {
NSLog(@"error: %zd",error);
NSLog(@"抱歉,未找到结果");
} }
然后在代理方法中得到详情检索结果。
-(void)onGetPoiDetailResult:(BMKPoiSearch *)searcher result:(BMKPoiDetailResult *)poiDetailResult errorCode:(BMKSearchErrorCode)errorCode
{
if(errorCode == BMK_SEARCH_NO_ERROR){
//在此处理正常结果
NSLog(@"%@",@"在此处理正常结果"); NSLog(@"%@--%@--%@--%@--%f--%d",poiDetailResult.address,poiDetailResult.name,poiDetailResult.tag,poiDetailResult.phone,poiDetailResult.price,poiDetailResult.favoriteNum); }
}
还有公交检索和路线检索,没有实际用过在demo中有写,但是没有把路线画出来,只是打印了一些信息在控制台,然后就是正向地理编码和反向地理编码示例如下:
-(void)viewDidLoad
{
//初始化检索对象
_searcher =[[BMKGeoCodeSearch alloc]init];
_searcher.delegate = self;
BMKGeoCodeSearchOption *geoCodeSearchOption = [[BMKGeoCodeSearchOption alloc]init];
geoCodeSearchOption.city= @"北京市";
geocodeSearchOption.address = @"海淀区上地10街10号";
BOOL flag = [_searcher geoCode:geoCodeSearchOption];
[geoCodeSearchOption release];
if(flag)
{
NSLog(@"geo检索发送成功");
}
else
{
NSLog(@"geo检索发送失败");
} //发起反向地理编码检索
//CLLocationCoordinate2D pt = (CLLocationCoordinate2D){39.915, 116.404};
//BMKReverseGeoCodeOption *reverseGeoCodeSearchOption = [[
//BMKReverseGeoCodeOption alloc]init];
//reverseGeoCodeSearchOption.reverseGeoPoint = pt;
//BOOL flag = [_searcher reverseGeoCode:reverseGeoCodeSearchOption];
//[reverseGeoCodeSearchOption release];
//if(flag)
//{
// NSLog(@"反geo检索发送成功");
//}
//else
//{
// NSLog(@"反geo检索发送失败");
//}
} //实现Deleage处理回调结果
//接收正向编码结果 - (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
if (error == BMK_SEARCH_NO_ERROR) {
//在此处理正常结果
}
else {
NSLog(@"抱歉,未找到结果");
}
} //接收反向地理编码结果
//-(void) onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:
//(BMKReverseGeoCodeResult *)result
//errorCode:(BMKSearchErrorCode)error{
// if (error == BMK_SEARCH_NO_ERROR) {
// 在此处理正常结果
// }
// else {
// NSLog(@"抱歉,未找到结果");
// }
//} //不使用时将delegate设置为 nil
-(void)viewWillDisappear:(BOOL)animated
{
_searcher.delegate = nil;
}
本文GitHub地址https://github.com/zhangkiwi/iOS_SN_BDMap-Test
iOS_SN_地图的使用(2)的更多相关文章
- iOS_SN_地图的使用(3)
地图的定位,记得不用定位的时候要关掉定位不然会一直定位,使电量使用过快. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional ...
- iOS_SN_百度地图基本使用(1)
上次用了一次百度地图,一直没有记笔记,今天记一笔. 以前没有用过百度地图的时候,听做这方面的朋友说百度地图有不少的坑,但是我做的时候没有遇到太大的坑,主要是要注意官方文档的注意事项,还有配置环境开发中 ...
- Java 征途:行者的地图
前段时间应因缘梳理了下自己的 Java 知识体系, 成文一篇望能帮到即将走进或正在 Java 世界跋涉的程序员们. 第一张,基础图 大约在 2003 年我开始知道 Java 的(当时还在用 Delph ...
- 【详细教程】论android studio中如何申请百度地图新版Key中SHA1值
一.写在前面 现在越来越多的API接口要求都要求提供我们的项目SHA1值,开发版目前还要求不高,但是发布版是必定要求的.而目前定位在各大APP中也较为常见,当下主流的百度地图和高德地图都在申请的时候会 ...
- C# 程序中嵌入百度地图
本例是对WinForm中使用百度地图的简要介绍.百度地图目前支持Android开发,IOS开发,Web开发,服务接口,具体可以参照'百度地图开放平台'. [动态加载百度地图]涉及到的知识点: WebB ...
- 高德地图api实现地址和经纬度的转换(python)
利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo ...
- Highcharts中国地图热力图
最近有个项目需要将MC销量按大陆各省统计,并以中国地图人力图效果显示.由于项目一直使用Highcharts进行图表的统计,故采用Highmaps来实现. 效果如下: 1)中国各个省.直辖市.自治区: ...
- arcgis api for js入门开发系列六地图分屏对比(含源代码)
上一篇实现了demo的地图标绘模块,本篇新增地图地图分屏对比模块,截图如下(源代码见文章底部): 对效果图的简单介绍一下,在demo只采用了两分屏对比,感兴趣的话,可以在两分屏的基础上拓展,修改css ...
- arcgis api for js入门开发系列五地图态势标绘(含源代码)
上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下: 本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/ ...
随机推荐
- JavaScript不一样的语法
JavaScript除了面向对象的部分,基本语法和C语言类似,但是也有一些自己的特别之处,现总结如下: (1)break和continue后面可以跟label 语法: break labelname; ...
- ECSTORE2.0 去页面底部版权
ECstore系统在每个页面底部都有版权信息,非常烦人,之前的解决方法是修改系统代码,但是对不懂的php代码人来说是个很困扰的事情. 现在ECStore在版本为2.0.32中进行了代码更新,只需要在c ...
- 文字列表无缝向上滚动JavaScript代码
<!DOCTYPE html> <html> <head> <meta charset=utf-> <title>文字列表无缝向上滚动Jav ...
- 编程Tips集锦
以下是自己编程的一些小贴士,记录,总结提高自己. 1.python中集合类型的查找,尽量用dict or set类型. dict和set类型,在python内部的实现都是使用hash映射,查找的时间复 ...
- Nt内核函数原型and中文
NtLoadDriver 服务控制管理器加载设备驱动. NtUnloadDriver 服务控制管理器支持卸载指定的驱动程序. NtRegisterNewDevice 加载新驱动文件. NtQueryI ...
- 【转】Nginx windows下搭建过程
Nginx windows下搭建过程 内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器, ...
- AE-模板替换->愉快今日--视频样片!
- BZOJ 2693 jzptab
http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题解: 考虑把lcm转化成gcd那答案就是然后神奇的设:就有:一样可以枚举 的取值,这是O(√ ...
- BZOJ 3153 Sone1
题解:水水哒AAA树啦 #include<iostream> #include<cstdio> #include<cmath> #include<algori ...
- 超酷创意HTML5动画演示及代码
HTML5是未来的网页开发神器,今天分享的这些HTML5动画大部分利用了CSS3的动画属性来实现,废话不多说,直接上演示和代码. HTML5/CSS3实现大风车旋转动画 这次我们要来分享一款很酷的HT ...