以前集成过很多次百度地图,遇到的问题多了,今天总结一下。
一.实现点击地图添加大头针功能。
向地图添加手势
Lpress.minimumPressDuration = 0.5;//1.0秒响应方法
Lpress.allowableMovement = 50.0;
Lpress.delegate = self;
[self.mapView addGestureRecognizer:Lpress];```
###手势响应方法
//坐标转换
```CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];//获取在地图点击的点
CLLocationCoordinate2D touchMapCoordinate = [self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView];//将所获取的点转换成经纬度
[self reverseGeoCoder:touchMapCoordinate];//最后调用反地理编码获取需要的信息```
(反地理编码具体可以看百度文档http://lbsyun.baidu.com/index.php?title=iossdk/guide/retrieval )
##二.控制大头针气泡显示与隐藏
###BMKMapView 对象方法
//显示气泡
- (void)selectAnnotation:(id <BMKAnnotation>)annotation animated:(BOOL)animated;
//隐藏气泡
- (void)deselectAnnotation:(id <BMKAnnotation>)annotation animated:(BOOL)animated;
##三.检索功能
###百度地图SDK提供的检索服务包括以下功能模块:POI检索,公交方案检索,驾车路线检索,步行路线检索,行政区边界数据检索,地理编码,反地理编码,公交详情检索,在线建议查询,短串分享(包括POI搜索结果分享、驾车/公交/骑行/步行路线规划分享、反向地理编码结果分享)。(这是官方套话)***我们的需求是搜索一个景区然后定位到当前景区,听着没什么但是做的时候还是挺曲折的。***
###POI检索 百度地图SDK提供三种类型的POI检索:周边检索、区域检索和城市内检索。下面将以周边检索为例,向大家介绍如何使用检索服务。读完这段话感觉这都是区域内检索,貌似不符合我们的需求。经过一顿折腾后终于实现。下面是干货:
####1.利用在线建议查询获取关键字列表与对应的城市。
```-(void)viewDidLoad
{
//初始化检索对象
_searcher =[[BMKSuggestionSearch alloc]init];
_searcher.delegate = self;
BMKSuggestionSearchOption* option = [[BMKSuggestionSearchOption alloc] init];
option.cityname = @"北京";
option.keyword = @"中关村";
BOOL flag = [_searchersuggestionSearch:option];
[option release];
if(flag)
{
NSLog(@"建议检索发送成功");
}
else
{
NSLog(@"建议检索发送失败");
}
}
//实现Delegate处理回调结果
- (void)onGetSuggestionResult:(BMKSuggestionSearch*)searcher result:(BMKSuggestionResult*)result errorCode:(BMKSearchErrorCode)error{
if (error == BMK_SEARCH_NO_ERROR) {
//在此处理正常结果
}
else {
NSLog(@"抱歉,未找到结果");
}
} ```
#### 在线建议查询的代理方法返回的数组 我们都是取得数组的第一个关键字和城市
####2.利用上面获得关键字和城市调用POI检索里面的 BMKCitySearchOption就能获取所有搜索的地点。
**以上纯属个人总结,有哪里不妥请多多指教。**