iOS 地图中自定义大头针

1.继承MKAnnotationView.

HYAnnotationView.h文件:

+ (instancetype)annotationViewWithMapView:(MKMapView *)mapView;

HYAnnotationView.m文件:

#import "HYAnnotation.h"//导入大头针model的头文件

@interface HYAnnotationView()

@property (nonatomic, weak) UIImageView *iconView;

@end

@implementation HYAnnotationView

+ (instancetype)annotationViewWithMapView:(MKMapView *)mapView

{

static NSString *ID = @"anno";

HYAnnotationView *annotationView = (HYAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];

if (annotationView == nil) {

// 传入循环利用标识来创建大头针控件

annotationView = [[HMAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:ID];

}

return annotationView;

}

- (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier

{

if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) {

// 显示标题和子标题 当自定义大头针的时候,如果需要显示标题和子标题,必须写这句话

self.canShowCallout = YES;

在这里面开始自定义大头针,可以随便创建个view

[self setsubview];

}

return self;

}

//自定义大头针

-(void)setsubview{

self.bounds = CGRectMake(0.f, 0.f, kWidth, kHeight);

UILabel *nameLab =[[UILabel alloc]init];

nameLab.width = 40;

nameLab.height = 30;

nameLab.y = 0;

nameLab.x = (self.width - nameLab.width) * 0.5;

nameLab.font =IWTextFont16;

nameLab.backgroundColor =IWTextColorRed;

nameLab.textColor =[UIColor whiteColor];

nameLab.layer.cornerRadius = 8.0;

nameLab.layer.borderWidth = 1.0;

nameLab.layer.borderColor =[UIColor clearColor].CGColor;

nameLab.clipsToBounds = TRUE;//去除边界

nameLab.textAlignment =NSTextAlignmentCenter;

[self addSubview:nameLab];

self.nameLab =nameLab;

}

//设置大头针上的属性

- (void)setAnnotation:(HMAnnotation *)annotation

{

[super setAnnotation:annotation];

}

//点击大头针的时候,在大头针上加一个自定义的View(如果想放tableview可以把tableview放在这个view里面)

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

{

if (self.selected == selected)  return;

if (selected)

{

if (self.calloutView == nil)  //self.calloutView是自定义view的属性

{

self.calloutView = [[ZLCustomCalloutView alloc] initWithFrame:CGRectMake(0, 0, kCalloutWidth, kCalloutHeight)];

self.calloutView.centerX =self.width/2.f+ + self.calloutOffset.x;

//            self.calloutView.center = CGPointMake(CGRectGetWidth(self.bounds) / 2.f + self.calloutOffset.x,

//                                                -CGRectGetHeight(self.calloutView.bounds) / 2.f + self.calloutOffset.y) ;

}

[self addSubview:self.calloutView];

}

else

{

[self.calloutView removeFromSuperview];

}

[super setSelected:selected animated:animated];

}

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

{

BOOL inside = [super pointInside:point withEvent:event];

if (!inside && self.selected)

{

inside = [self.calloutView pointInside:[self convertPoint:point toView:self.calloutView] withEvent:event];

}

return inside;

}

在用的时候:

#pragma mark - MKMapViewDelegate

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(HYAnnotation *)annotation

{

// 返回nil就会按照系统的默认做法

if (![annotation isKindOfClass:[HYAnnotation class]]) return nil;

// 1.获得大头针控件

HYAnnotationView *annoView = [HYAnnotationView annotationViewWithMapView:mapView];

// 2.传递模型

annoView.annotation = annotation;

return annoView;

}

时间: 2024-10-05 14:41:22

iOS 地图中自定义大头针的相关文章

iOS地图中添加大头针

首先,我们得新建一个遵守MKAnnotation的对象,并且拥有以下几个属性: @interface LHAnnotation : NSObject<MKAnnotation> // Center latitude and longitude of the annotion view. // The implementation of this property must be KVO compliant. @property (nonatomic, assign) CLLocationCoo

iOS开发中自定义字体的方法

http://www.cnblogs.com/iyou/archive/2014/05/25/3751669.html 1. 首先下载你想要设置的字体库,例如设置方正启体简体 2. 添加到工程,一定要注意勾选红色框框处,默认是不勾选的  添加以后 3.在plist文件中添加 4.现在已经添加成功了,但是要使用就必须知道FontName,用以下代码可查到 NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyName

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 :跟

【Swift】IOS开发中自定义转场动画

在IOS开发中,我们model另外一个控制器的时候,一般都使用的自定义的转场动画. 其实我们可以自定义一些转场动画.达到不同的转场效果. 步骤如下:(photoBrowser是目标控制器) 1.在源控制器中,设置目标控制器的转场代理为 self 1 //设置Model转场代理 2  photoBrowser.transitioningDelegate = self 2.同时设置目标控制器的model类型 1 //设置Model类型 2 photoBrowser.modalPresentation

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

iOS开发中自定义相册功能性能改善

大多数项目中都会用到相册浏览和选择功能,如果需要使用到自定义相册浏览器,那么,性能优化将是一个很重要的课题.毕竟操作对象是图片这样相对较大写数据单位.今天就针自定义相册浏览选择器四个优化点进行剖析: 缩略图页面加载速度优化 缩略图页面滑动流畅度优化 大图浏览滑动流畅度优化 内存优化 先看看自定义相册的两个主要界面: 1.缩略图页面加载速度优化 如果本地相册有200张以上的照片,那么缩略图页面的加载速度就显得尤为重要. 首先,要保证缩略图界面的控制器在没有加载照片的时候,从viewDidLoad到

iOS地图中一键还原用户的位置

话我也就不多说了,直接上图上代码,和大家共享!!!!欢迎交流与学习! 这是代码部分

2015 IOS 地图——在蓝懿教育 学习笔记

1,在VC中添加地图界面MKMapView(全屏) 2.选工程界面相对应的界面中倒数第二行,Build Phases选项中 选择第三个 的+号,弹出来搜索框输入mapk,选择搜索结果确认添加,此时地图能显示出来. (3.在SB中的地图右侧选项有三个模式,(二维线路,卫星无线路,卫星有线路)) 4.关联代码在vc中关联myMV.但此时并不被系统识别,此时要添加import<MapKit/MapKit.h>协议,此时就被识别了 5.此时要从网络获取到经纬度,比如天安门经纬度, 此时要用到方法——创

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

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