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/ ...
随机推荐
- 网页通用的测试用例(出处:: 51Testing-- lxp1119216)
此题的考察目的:面试者是否熟悉各种测试方法,是否有丰富的Web测试经验, 是否了解Web开发,以及设计Test case的能力 这个题目还是相当有难度的, 一般的人很难把这个题目回答好. 首先,你要了 ...
- 转载:解决linux ping: unknown host www.baidu.com
解决linux ping: unknown host www.baidu.com 转载网址:http://www.kankanews.com/ICkengine/archives/48417.shtm ...
- Dapper试用简例
1.选择3.5以上框架在新建项目中引用Dapper.dll. 2.在后台写代码,代码写出来后感觉以前学的都白学了. 3. using Dapper; using System; using Syste ...
- 转:QT 的点点滴滴 错误总结
转自:http://blog.csdn.net/lbsljn/archive/2009/12/29/5099590.aspx MinGw + CodeBlock + QT4.5 类定义后面要加&quo ...
- QT程序制作deb包并安装在应用程序菜单
制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载 ...
- USENIX 最佳论文奖:擦除 Windows Azure 存储编码
我们发表了一篇介绍Windows Azure 存储如何用编码方式擦除数据的论文,此论文在 2012 年 6 月的 USENIX 技术年会上荣获最佳论文奖.这是 MicrosoftResearch ...
- 设计模式(十):Decorator装饰者模式 -- 结构型模式
1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继 ...
- 让iframe调用页面的背景透明
需求:在一个div里面嵌套一个iframe(src="ui.html"),div有背景图片,要让iframe里的内容透明地显示在div层上. 刚开始直接把iframe放在div中, ...
- Java IntelliJ IDEA 不能显示项目里的文件结构解决办法
按下列步骤操作: 1. 关闭IDEA, 2.然后删除项目文件夹下的.idea文件夹 3.重新用IDEA工具打开项目
- javascript中this、apply、call、bind的用法和区别
参考阮一峰文章链接:http://javascript.ruanyifeng.com/oop/basic.html#toc10