POI检索
1.POI检索简介
POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。
融汇地图SDK提供三种类型的POI检索:周边检索、区域检索和城市内检索。下面将以POI城市内检索、周边检索和区域检索为例,向大家介绍如何使用检索服务。
2.POI城市内检索
根据关键字检索适用于在某个城市搜索某个名称相关的POI,例如:查找北京市的“饭店”。
(1)构造 FMSearch
对象,并设置代理。FMSearch
对象的构造需要根据 http://map.botaisoft.com/apis
初始化。
//初始化搜索对象 ,并设置代理
FMSearch *search = [[FMSearch alloc] initWithBaseUrl:http://map.botaisoft.com/apis];
search.delegate = self;
(2)设置关键字检索参数,构造 FMCitySearchOption
对象。其中 FMCitySearchOption
对象的 cityName
和 keyword
是必设参数,不能为空。然后进行关键字检索。
//请求参数类FMCitySearchOption
FMCitySearchOption *cityOption = [[FMCitySearchOption alloc] init];
cityOption.cityName = @"北京";
cityOption.keyword = @"饭店";
cityOption.pageSize = 20;
cityOption.pageIndex = 1;
cityOption.searchType = 2;
//发起城市内POI检索
BOOL flag = [search poiSearchInCity:cityOption];
if(flag)
{
NSLog(@"城市内检索发送成功");
}else
{
NSLog(@"城市内检索发送失败");
}
(3)在回调中处理数据,当检索成功时,会进到 onGetSearchResult
回调函数中,通过解析 searchResult
对象把检索结果在地图上绘制点展示出来。
- (void)onGetSearchResult:(FMSearch *)searcher result:(FMPoiSearchResult *)searchResult errorCode:(NSNumber *)errorCode
{
NSLog(@"搜索结果返回");
if (searchResult.poiInfoList.count != 0) {
NSArray *arr = searchResult.poiInfoList;
FMPoiInfo *first = [arr firstObject];
}
}
3.POI周边检索
周边搜索是一个圆形范围,适用于以某个位置为中心点,自定义检索半径值,搜索某个位置附近的POI。
(1)构造 FMSearch
对象,并设置代理。FMSearch
对象的构造需要根据 http://map.botaisoft.com/apis
初始化。
//初始化搜索对象 ,并设置代理
FMSearch *search = [[FMSearch alloc] initWithBaseUrl:http://map.botaisoft.com/apis];
search.delegate = self;
(2)设置关键字检索参数,构造 FMNearbySearchOption
对象。其中 FMNearbySearchOption
对象的 location
和 radius
,keyword
是必设参数,不能为空。然后进行关键字检索。
//FMNearbySearchOption
FMNearbySearchOption *areaOption = [[FMNearbySearchOption alloc] init];
areaOption.location = CLLocationCoordinate2DMake(39.915101, 116.403981);
areaOption.radius = 500.;
areaOption.keyword = self.keyWord.text;
areaOption.pageSize = 20;
areaOption.pageIndex = 1;
areaOption.searchType = 2;
//发起检索
BOOL flag = [search poiSearchNearby:areaOption];
if(flag)
{
NSLog(@"周边检索发送成功");
}else
{
NSLog(@"周边检索发送失败");
}
(3)在回调中处理数据,当检索成功时,会进到 onGetSearchResult
回调函数中,通过解析 searchResult
对象把检索结果在地图上绘制点展示出来。
- (void)onGetSearchResult:(FMSearch *)searcher result:(FMPoiSearchResult *)searchResult errorCode:(NSNumber *)errorCode
{
NSLog(@"搜索结果返回");
if (searchResult.poiInfoList.count != 0) {
NSArray *arr = searchResult.poiInfoList;
FMPoiInfo *first = [arr firstObject];
}
}
4.POI区域检索
POI区域检索,是在指定的绘制的矩形范围内(依据左下角坐标和右上角坐标绘制的矩形范围),检索POI。
(1)构造 FMSearch
对象,并设置代理。FMSearch
对象的构造需要根据 http://map.botaisoft.com/apis
初始化。
// 初始化搜索对象 ,并设置代理
FMSearch *search = [[FMSearch alloc] initWithBaseUrl:http://map.botaisoft.com/apis];
search.delegate = self;
(2)设置关键字检索参数,构造 FMBoundSearchOption
对象。其中 FMBoundSearchOption
对象的 leftBottom
和 rightTop
,keyword
是必设参数,不能为空。然后进行关键字检索。
// 请求参数类FMBoundSearchOption
FMBoundSearchOption *areaOption = [[FMBoundSearchOption alloc] init];
areaOption.leftBottom = CLLocationCoordinate2DMake(39.899202, 116.374054);
areaOption.rightTop = CLLocationCoordinate2DMake(39.923956, 116.415939);
areaOption.keyword = @"饭店";
areaOption.pageSize = 20;
areaOption.pageIndex = 1;
areaOption.searchType = 2;
//发起检索
BOOL flag = [search poiSearchInBounds:areaOption];
if(flag)
{
NSLog(@"区域内POI检索发送成功");
}else
{
NSLog(@"区域内POI检索发送失败");
}
(3)在回调中处理数据,当检索成功时,会进到 onGetSearchResult
回调函数中,通过解析 searchResult
对象把检索结果在地图上绘制点展示出来。
- (void)onGetSearchResult:(FMSearch *)searcher result:(FMPoiSearchResult *)searchResult errorCode:(NSNumber *)errorCode
{
NSLog(@"搜索结果返回");
if (searchResult.poiInfoList.count != 0) {
NSArray *arr = searchResult.poiInfoList;
FMPoiInfo *first = [arr firstObject];
}
}