年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4469|回复: 0

百度地图使用第六讲:检索及大头针的使用

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2014-11-18 14:55:23 | 显示全部楼层 |阅读模式
    基本步骤:
    1、创建地图视图;
    2、使用定位的功能获取到当前位置;
    3、利用检索功能,在当前位置检索某个关键字(如:酒吧);
    4、利用检索到的结果,创建大头针并在地图上展示;

    关键的类:
    1、BMKMapView:地图
    2、BMKLocationService:定位
    3、BMKPoiSearch:POI检索(POI即Point Of Interest可以翻译为兴趣点)
    4、BMKNearbySearchOption:周边搜索选项,配合POI检索使用,做为POI检索的数据模型
    5、BMKPointAnnotation:大头针,可直接添加到地图上做为标注使用

    关键方法:
    #pragma mark 定位服务的代理方法,如果获取到位置信息则调用
    - (void)didUpdateUserLocation:(BMKUserLocation *)userLocation
    #pragma mark POI检索代理方法,如果检索到结果则调此方法
    -(void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult *)poiResult errorCode:(BMKSearchErrorCode)errorCode

    代码示例:
    1. #import "SAViewController.h"
    2. #import "BMapKit.h"
    3. @interface SAViewController () <BMKPoiSearchDelegate, BMKMapViewDelegate, BMKLocationServiceDelegate>
    4. @property (nonatomic, strong) BMKMapView         *mapView;   // 地图
    5. @property (nonatomic, strong) BMKPoiSearch       *poiSearch; // POI检索
    6. @property (nonatomic, strong) BMKLocationService *location;  // 定位服务
    7. @end
    8. @implementation SAViewController
    9. - (void)viewDidLoad
    10. {
    11.     [super viewDidLoad];
    12.     // 添加地图视图
    13.     self.mapView.frame = self.view.frame;
    14.     [self.view addSubview:self.mapView];
    15.    
    16.     // 开启定位服务
    17.     self.location = [[BMKLocationService alloc] init];
    18.     self.location.delegate = self;
    19.     [self.location startUserLocationService];
    20.    
    21. }
    22. - (void)viewWillAppear:(BOOL)animated
    23. {
    24.     [super viewWillAppear:animated];
    25.     [self.mapView viewWillAppear];
    26. }
    27. - (void)viewWillDisappear:(BOOL)animated
    28. {
    29.     [super viewWillDisappear:animated];
    30.     [self.mapView viewWillDisappear];
    31. }
    32. - (BMKMapView *)mapView
    33. {
    34.     if (!_mapView) {
    35.         _mapView = [[BMKMapView alloc] init];
    36.         _mapView.delegate = self;
    37.     }
    38.     return _mapView;
    39. }
    40. - (BMKPoiSearch *)poiSearch
    41. {
    42.     if (!_poiSearch) {
    43.         _poiSearch = [[BMKPoiSearch alloc] init];
    44.         _poiSearch.delegate = self;
    45.     }
    46.     return _poiSearch;
    47. }
    48. #pragma mark 定位服务的代理方法,如果获取到位置信息则调用
    49. - (void)didUpdateUserLocation:(BMKUserLocation *)userLocation
    50. {
    51.     // 定位成功后将当前的位置设置为地图的中心点
    52.     self.mapView.centerCoordinate = userLocation.location.coordinate;
    53.     // 地图的缩放比例的17 (3 ~ 19取值)
    54.     self.mapView.zoomLevel = 17;
    55.     // 停止定位服务
    56.     [self.location stopUserLocationService];
    57.    
    58.     // 创建一个搜索选项(检索的数据模型)
    59.     BMKNearbySearchOption *nearOption = [[BMKNearbySearchOption alloc] init];
    60.     // 检索关键字:“酒吧”
    61.     nearOption.keyword = @"酒吧";
    62.     // 检索位置为当前定位到的坐标(即我当前的位置)
    63.     nearOption.location = userLocation.location.coordinate;
    64.     // 开始检索
    65.     [self.poiSearch poiSearchNearBy:nearOption];
    66. }
    67. #pragma mark POI检索代理方法,如果检索到结果则调此方法
    68. -(void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult *)poiResult errorCode:(BMKSearchErrorCode)errorCode
    69. {
    70.     // 检索到相关信息后,对结果进行遍历(结果为BMKPoiInfo类型的数组)
    71.     for (BMKPoiInfo *info in poiResult.poiInfoList) {
    72.         // 遍历结果中的每一个数据模型并创建一个大头针
    73.         BMKPointAnnotation *annotation = [[BMKPointAnnotation alloc] init];
    74.         // 大头针的位置为结果的坐标(经纬度)
    75.         annotation.coordinate = info.pt;
    76.         // 大头针的标题为结果的名称
    77.         annotation.title = info.name;
    78.         // 大头针的子标题为结果的地址
    79.         annotation.subtitle = info.address;
    80.         // 在大头针添加到地图上展示
    81.         [self.mapView addAnnotation:annotation];
    82.     }
    83. }
    84. @end
    复制代码
    效果图:

    iOS-模拟器屏幕快照“2014年11月20日-上午10.06.26”.jpg
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-4-29 05:36 , Processed in 0.057150 second(s), 25 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表