Sian 发表于 2014-11-18 11:08:17

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

1、加载基本地图视图展示

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

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



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

5、关键代码示例#import "SAViewController.h"
#import "BMapKit.h"

@interface SAViewController () <BMKPoiSearchDelegate, BMKMapViewDelegate>

@property (nonatomic, strong) BMKMapView *mapView;                   // 地图

@property (nonatomic, strong) BMKPointAnnotation *pointAnnotation;   // 大头针

@end

@implementation SAViewController

- (void)viewDidLoad
{
    ;
   
    // 创建一个地图添加到控制器视图上
    self.mapView.frame = self.view.frame;
    ;
   
    // 创建一个大头针模型,设置大头针经纬坐标
    self.pointAnnotation = [ init];
    self.pointAnnotation.title = @"大头针";
    self.pointAnnotation.subtitle = @"一个神奇的东西";
    self.pointAnnotation.coordinate = (CLLocationCoordinate2D){39.9, 116.4};
    ;
   
}

- (void)viewWillAppear:(BOOL)animated
{
    ;
    ;
}

- (void)viewWillDisappear:(BOOL)animated
{
    ;
    ;
}

#pragma mark mapView的Get方法,延时加载
- (BMKMapView *)mapView
{
    if (!_mapView) {
      _mapView = [ init];
      _mapView.delegate = self;
    }
    return _mapView;
}

#pragma mark 添加标注时调用
- (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    NSLog(@"地图添加标注时会调用!");
}

#pragma mark 为标注生成新的视图
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
{
    NSLog(@"地图重新生成标注蒙层时调用!");
   
    // 类似TableViewCell,可从缓存中重复利用的View
    BMKPinAnnotationView *annotationView;
    annotationView = (BMKPinAnnotationView *);
    if (!annotationView) {
      // BMKPinAnnotationView是BMKAnnotationView的子类(大头针标注类)
      annotationView = [ initWithAnnotation:annotation reuseIdentifier:@"Annotation"];
      // 设置大头针的颜色为绿色
      annotationView.pinColor = BMKPinAnnotationColorGreen;
    }
    return annotationView;
}
@end
页: [1]
查看完整版本: 百度地图使用第五讲:大头针使用(地图标注)