博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS地图之MapKit框架
阅读量:5115 次
发布时间:2019-06-13

本文共 3582 字,大约阅读时间需要 11 分钟。

MapKit框架在地图中用于显示,工程实例:

 

1 #import "ViewController.h" 2  3 #import 
4 #import
5 #import "myAnotation.h" 6 7 @interface ViewController ()
8 ///定位管理器 9 @property (nonatomic, strong) CLLocationManager *manager;10 ///显示地图的视图11 @property (nonatomic, strong) MKMapView *mapView;12 13 @end14 15 @implementation ViewController16 17 - (void)viewDidLoad {18 [super viewDidLoad];19 20 [self createMapView];21 22 }23 24 #pragma mark - 创建地图视图25 - (void)createMapView {26 //创建地图视图,添加到当前视图27 self.mapView = [[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds];28 [self.view addSubview:self.mapView];29 //设置代理30 self.mapView.delegate = self;31 //定位32 self.manager = [[CLLocationManager alloc] init];33 //判断隐私并授权34 if (![CLLocationManager locationServicesEnabled]) {35 NSLog(@"当前设备的定位不可用");36 }37 if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) {38 //注意设置info.plist(参照上一篇博客CoreLocation框架)39 [self.manager requestWhenInUseAuthorization];40 }41 //设置地图的定位追踪,枚举值,根据实际需求选取枚举值42 self.mapView.userTrackingMode = MKUserTrackingModeFollow;43 //设置地图的类型44 self.mapView.mapType = MKMapTypeStandard;45 46 //添加大头针47 [self addAnotation];48 49 }50 #pragma mark - 添加大头针方法的响应51 - (void)addAnotation {52 //设置经纬度53 CLLocationCoordinate2D location = CLLocationCoordinate2DMake(40, 116);54 myAnotation *anotation = [[myAnotation alloc] init];55 anotation.coordinate = location;56 anotation.title = @"北京";57 anotation.subtitle = @"朝阳区";58 anotation.image = [UIImage imageNamed:@"11.png"];59 60 [self.mapView addAnnotation:anotation];61 62 }63 64 #pragma mark - 代理方法65 - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {66 NSLog(@"====%@", userLocation);67 }68 #pragma mark - 实现自定义大头针的代理方法(显示大头针的时候才会调用的方法)69 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id
)annotation {70 //判断是否是自定义的大头针71 if ([annotation isKindOfClass:[myAnotation class]]) {72 static NSString *identifier = @"Annotation";73 MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:identifier];74 if (!annotationView) {75 annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];76 77 //允许用户交互78 annotationView.canShowCallout = YES;79 //设置偏移量80 annotationView.calloutOffset = CGPointMake(0, 2);81 //设置左视图82 annotationView.leftCalloutAccessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"11.png"]];83 84 }85 86 //修改大头针视图87 annotationView.annotation = annotation;88 annotationView.image = ((myAnotation *)annotation).image;89 90 return annotationView;91 92 }else {93 return nil;94 }95 }96 @end

大头针模型:

1 #import 
2 #import
3 @interface myAnotation : NSObject
4 //大头针模型;重写协议中的三个属性coordinate(标记位置)、title(标题)、subtitle(子标题)三个属性 5 ///坐标 6 @property (nonatomic) CLLocationCoordinate2D coordinate; 7 ///标题 8 @property (nonatomic, copy) NSString *title; 9 ///子标题10 @property (nonatomic, copy) NSString *subtitle;11 ///自定义大头针(换成图片)12 @property (nonatomic, strong) UIImage *image;13 14 @end

 

转载于:https://www.cnblogs.com/bdlfbj/p/5547120.html

你可能感兴趣的文章
尚学堂Java面试题整理
查看>>
MySQL表的四种分区类型
查看>>
[BZOJ 3489] A simple rmq problem 【可持久化树套树】
查看>>
STM32单片机使用注意事项
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
Loj #139
查看>>
hihocoder1187 Divisors
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
Ubuntu下安装MySQL及简单操作
查看>>
前端监控
查看>>
clipboard.js使用方法
查看>>
移动开发平台-应用之星app制作教程
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
伪类与超链接
查看>>
centos 7 redis-4.0.11 主从
查看>>
博弈论 从懵逼到入门 详解
查看>>
永远的动漫,梦想在,就有远方
查看>>