地图 大头针

MyAnnotation.h

 1 #import <Foundation/Foundation.h>
 2 #import <MapKit/MapKit.h>
 3
 4 @interface MyAnnotation : NSObject <MKAnnotation>
 5
 6 // 重写协议中的三个属性coordinate(标记位置)、title(标题)、subtitle(子标题)
 7 /**  坐标  */
 8 @property (nonatomic) CLLocationCoordinate2D coordinate;
 9
10 /**  标题  */
11 @property (nonatomic, copy) NSString *title;
12
13 /**  子标题  */
14 @property (nonatomic, copy) NSString *subtitle;
15
16
17 // 自定义大头针
18 /**  自定义大头针显示的图片  */
19 @property (nonatomic, strong) UIImage *image;
20
21 @end

ViewController.m

  1 #import "ViewController.h"
  2
  3 // 地图使用的是MapKit框架
  4 #import <MapKit/MapKit.h>
  5 #import <CoreLocation/CoreLocation.h>
  6 #import "MyAnnotation.h"
  7
  8 @interface ViewController () <MKMapViewDelegate>
  9
 10 /**  定位管理器  */
 11 @property (nonatomic, strong) CLLocationManager *locationManager;
 12
 13 /**  显示地图的视图  */
 14 @property (nonatomic, strong) MKMapView *mapView;
 15
 16 @end
 17
 18 @implementation ViewController
 19
 20 - (void)viewDidLoad {
 21     [super viewDidLoad];
 22
 23 /*
 24  大头针:在iOS开发中经常会标记某个位置,需要使用地图标注,也就是大家俗称的“大头针”。只要一个NSObject类实现MKAnnotation协议就可以作为一个大头针,通常会重写协议中coordinate(标记位置)、title(标题)、subtitle(子标题)三个属性,然后在程序中创建大头针对象并调用addAnnotation:方法添加大头针即可(之所以iOS没有定义一个基类实现这个协议供开发者使用,多数原因应该是MKAnnotation是一个模型对象,对于多数应用模型会稍有不同,例如后面的内容中会给大头针模型对象添加其他属性)。
 25 */
 26
 27     // 创建视图
 28     [self createMapView];
 29 }
 30
 31
 32 #pragma mark - 创建视图
 33 - (void)createMapView {
 34
 35     // 创建地图,并添加到当前视图上
 36     self.mapView = [[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds];
 37     [self.view addSubview:self.mapView];
 38
 39     // 设置代理
 40     _mapView.delegate = self;
 41
 42     // 定位
 43     self.locationManager = [[CLLocationManager alloc] init];
 44
 45     if (![CLLocationManager locationServicesEnabled]) {
 46         NSLog(@"当前设备定位不可用");
 47     }
 48
 49     if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) {
 50         [self.locationManager requestWhenInUseAuthorization];
 51     }
 52
 53     // 设置地图的定位追踪
 54     _mapView.userTrackingMode = MKUserTrackingModeFollow;
 55
 56     // 设置地图的类型
 57     _mapView.mapType = MKMapTypeStandard;
 58
 59     // 添加大头针
 60     [self addAnnotation];
 61
 62 }
 63
 64
 65 #pragma mark - 添加大头针
 66 - (void)addAnnotation {
 67
 68     // 设置位置
 69     CLLocationCoordinate2D location1 = CLLocationCoordinate2DMake(40, 116);
 70     CLLocationCoordinate2D location2 = CLLocationCoordinate2DMake(39, 121);
 71     CLLocationCoordinate2D location3 = CLLocationCoordinate2DMake(31, 121);
 72
 73
 74     MyAnnotation *annotation1 = [[MyAnnotation alloc] init];
 75     annotation1.coordinate = location1;
 76     annotation1.title = @"北京";
 77     annotation1.subtitle = @"大风起兮云飞扬";
 78 #warning 添加代码
 79     annotation1.image = [UIImage imageNamed:@"1.jpg"];
 80
 81     MyAnnotation *annotation2 = [[MyAnnotation alloc] init];
 82     annotation2.coordinate = location2;
 83     annotation2.title = @"大连";
 84     annotation2.subtitle = @"哈哈哈";
 85 #warning 添加代码
 86     annotation2.image = [UIImage imageNamed:@"1.jpg"];
 87
 88     MyAnnotation *annotation3 = [[MyAnnotation alloc] init];
 89     annotation3.coordinate = location3;
 90     annotation3.title = @"上海";
 91     annotation3.subtitle = @"嘿嘿嘿";
 92 #warning 添加代码
 93     annotation3.image = [UIImage imageNamed:@"1.jpg"];
 94
 95     [_mapView addAnnotations:@[annotation1, annotation2, annotation3]];
 96 }
 97
 98
 99 #warning 增加代码
100 #pragma mark - 实现自定义大头针的代理方法
101 // 显示大头针的时候才会调用
102 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
103
104     // 判断是否是当前自定义的大头针类
105     if ([annotation isKindOfClass:[MyAnnotation class]]) {
106
107         // 先定义一个重用标识
108         static NSString *identifier = @"AnnotationOne";
109         MKAnnotationView *annotationView = [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
110         if (!annotationView) {
111             annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
112             // 允许用户交互
113             annotationView.canShowCallout = YES;
114             // 设置详情和大头针的头偏移量
115             annotationView.calloutOffset = CGPointMake(0, 1);
116             // 设置详情的左视图
117             annotationView.leftCalloutAccessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];
118         }
119         // 修改大头针视图
120         annotationView.annotation = annotation;
121         annotationView.image = ((MyAnnotation *)annotation).image;
122         return annotationView;
123     } else {
124         return nil;
125     }
126 }
127
128
129 #pragma mark - 代理方法
130 - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
131
132     NSLog(@"%@", userLocation);
133 }
134
135 @end
时间: 2024-10-26 19:32:51

地图 大头针的相关文章

创建地图 大头针 系统自带的和自定义的

@interface ViewController () <MKMapViewDelegate> { //地图对象 MKMapView *_mapView; UILabel *_userLocationLabel;  //用户坐标 } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self createMapView]; [self createAnnotations]; //调用

集成百度地图SDK(swift)

一 集成百度地图最终的效果 二 知识点 1 信息检索 2 地图大头针和导航SDK 三 集成百度地图SDK 1 百度搜索百度地图SDK 2 注册账号(尽量)–>如果没有账号,最好去注册一个账号(我这里就不细说注册账号的步骤了) 3 由于我们要做的是和百度地图相关的,所以直接按照下面图片点击即可(这里我将一一介绍ios中地图的相关开发) 4 点击ios地图SDK里面是一些相关概述 5 按照图片点击进入下面 6 相关解释 6.1 一般我们都是直接点击"全部下载" 6.2 解释 : &q

Ios 高德地图 地图上添加多个大头针 怎么在复用队列中知道我单击的是哪一个大头针

//创建大头针对象     MAPointAnnotation *pointAnnotation = [[MAPointAnnotation alloc] init];     //插入大头针的位置     pointAnnotation.coordinate = CLLocationCoordinate2DMake(39.989631, 116.481018);     //大头针的标题     pointAnnotation.title = @"方恒国际";     //大头针的子

iOS:实现MKAnnotation协议,在地图上设置大头针,点击显示具体的位置信息

如何添加大头针(地标): 通过MapView的addAnnotation方法可以添加一个大头针到地图上 通过MapView的addAnnotations方法可以添加多个大头针到地图上 –(void)addAnnotation:(id <MKAnnotation>)annotation; 说明:需要传入一个遵守了MKAnnotation协议的对象 基本步骤为: <1>新建一个遵守MKAnnotation协议的类: @interface MyAnnotation : NSObject 

iOS地图的显示(大头针)

1 1.导入主头文件 2 #import <MapKit/MapKit.h> 3 MapKit框架使用须知 4 MapKit框架中所有数据类型的前缀都是MK 5 MapKit有一个比较重要的UI控件:MKMapView,专门用于地图显示 6 7 2.跟踪显示用户的位置 8 9 设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置 10 MKUserTrackingModeNone :不跟踪用户的位置 11 MKUserTrackingModeFollow :跟

iOS 地图(添加大头针)

首先在工程中导入MapKit.framework库文件 1 #import <UIKit/UIKit.h> 2 3 @interface AppDelegate : UIResponder <UIApplicationDelegate> 4 5 @property (strong, nonatomic) UIWindow *window; 6 7 @end 1 #import "AppDelegate.h" 2 #import "RootViewCon

总结一下百度地图 定位 大头针 和划线和城市检索的功能

- (void)viewDidLoad {    [super viewDidLoad];          //初始化BMKLocationService    _locService = [[BMKLocationService alloc]init];    _locService.delegate = self;    //启动LocationService [_locService startUserLocationService]; } 在delegate中更新位置和对应方向 #pr

iOS进阶_地图上定位的标志——大头针

一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大头针类,我自定义的为MyAnnotation 大头针: 在iOS开发中经常会标记某个位置,需要使用地图标注,也就是大家俗称的“大头针”.只要一个NSObject类实现MKAnnotation协议就可以作为一个大头针,通常会重写协议中coordinate(标记位置).title(标题).subtitl

地图篇-04.添加/删除大头针

地图篇-04.添加/删除大头针 博主这几天有点事,没有更新,还望海涵. 上一小节讲到展示地图,在展示地图的过程中,显示用户位置的时候是一个蓝色小圆点,但是朋友们觉得不好看,那弱弱的问一句,能换么? 肯定是能的啦. 1.准备 创建一个新项目,在storyboard中拖一个mapView,两个button,一个添加大头针,一个删除大头针,如下: 拖好了控件之后,简单搞下自动布局,然后把这3个控件拖入viewController.m中,不要忘记导入头文件和导入框架,这个前面讲过,这里不做细讲. 2.添