年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4295|回复: 0

百度地图使用第五讲:大头针使用(地图标注)

[复制链接]
  • TA的每日心情

    2024-10-15 10:05
  • 签到天数: 372 天

    [LV.9]以坛为家II

    发表于 2014-11-18 11:08:17 | 显示全部楼层 |阅读模式
    1、加载基本地图视图展示

    2、创建一个大头针模型(主要是经纬度)涉及到的类有BMKPointAnnotation、BMKAnnotationView、BMKPinAnnotationView
    BMKPointAnnotation:大头针模型,用来描述大头针的坐标等信息;
    BMKAnnotationView:标注视图,包含标注上面的标题、子标题、及相关按钮等;
    BMKPinAnnotationView:大头针视图,继承自BMKAnnotationView,可以理解为大头针是一种特殊的标注;

    3、将大头针添加到地图,到此为止事实上已经搞定,地图上能正常显示刚刚所标注的大头针了,如下效果图所示:

    iOS-模拟器屏幕快照“2014年11月18日-上午11.02.21”.jpg

    4、此外,mapView还有另外两个代理方法可以对大头针进行后续的处理,比如大头针颜色,动画效果(从天而降)等
    - (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views
    - (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation


    5、关键代码示例
    1. #import "SAViewController.h"
    2. #import "BMapKit.h"
    3. @interface SAViewController () <BMKPoiSearchDelegate, BMKMapViewDelegate>
    4. @property (nonatomic, strong) BMKMapView *mapView;                   // 地图
    5. @property (nonatomic, strong) BMKPointAnnotation *pointAnnotation;   // 大头针
    6. @end
    7. @implementation SAViewController
    8. - (void)viewDidLoad
    9. {
    10.     [super viewDidLoad];
    11.    
    12.     // 创建一个地图添加到控制器视图上
    13.     self.mapView.frame = self.view.frame;
    14.     [self.view addSubview:self.mapView];
    15.    
    16.     // 创建一个大头针模型,设置大头针经纬坐标
    17.     self.pointAnnotation = [[BMKPointAnnotation alloc] init];
    18.     self.pointAnnotation.title = @"大头针";
    19.     self.pointAnnotation.subtitle = @"一个神奇的东西";
    20.     self.pointAnnotation.coordinate = (CLLocationCoordinate2D){39.9, 116.4};
    21.     [self.mapView addAnnotation:self.pointAnnotation];
    22.    
    23. }
    24. - (void)viewWillAppear:(BOOL)animated
    25. {
    26.     [super viewWillAppear:animated];
    27.     [self.mapView viewWillAppear];
    28. }
    29. - (void)viewWillDisappear:(BOOL)animated
    30. {
    31.     [super viewWillDisappear:animated];
    32.     [self.mapView viewWillDisappear];
    33. }
    34. #pragma mark mapView的Get方法,延时加载
    35. - (BMKMapView *)mapView
    36. {
    37.     if (!_mapView) {
    38.         _mapView = [[BMKMapView alloc] init];
    39.         _mapView.delegate = self;
    40.     }
    41.     return _mapView;
    42. }
    43. #pragma mark 添加标注时调用
    44. - (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views
    45. {
    46.     NSLog(@"地图添加标注时会调用!");
    47. }
    48. #pragma mark 为标注生成新的视图
    49. -(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
    50. {
    51.     NSLog(@"地图重新生成标注蒙层时调用!");
    52.    
    53.     // 类似TableViewCell,可从缓存中重复利用的View
    54.     BMKPinAnnotationView *annotationView;
    55.     annotationView = (BMKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"Annotation"];
    56.     if (!annotationView) {
    57.         // BMKPinAnnotationView是BMKAnnotationView的子类(大头针标注类)
    58.         annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Annotation"];
    59.         // 设置大头针的颜色为绿色
    60.         annotationView.pinColor = BMKPinAnnotationColorGreen;
    61.     }
    62.     return annotationView;
    63. }
    64. @end
    复制代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-12-23 08:58 , Processed in 0.049811 second(s), 25 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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