zoukankan      html  css  js  c++  java
  • iOS 大头针的基本使用

    1.导入头文件

    #import <MapKit/MapKit.h>
    #import <CoreLocation/CoreLocation.h>

    2.为成员变量mapView添加手势识别

    1 - (void)viewDidLoad
    2 {
    3     [super viewDidLoad]; 
    4     // 添加手势识别
    5     [self.mapView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapMapView:)]];
    6 }

    3.实现目标方法

     1 - (void)tapMapView:(UITapGestureRecognizer *)tap
     2 {
     3     // 获取所点击view的x,y坐标
     4     CGPoint point = [tap locationInView:tap.view];
     5     // x,y坐标转地理坐标
     6     CLLocationCoordinate2D coordinate = [self.mapView convertPoint:point toCoordinateFromView:tap.view];
     7     // 初始化大头针,之所以初始化大头针,是因为系统的MKAnnotation各项属性都是只读
     8     QKAnnotation *annotation = [[QKAnnotation alloc]init];
     9     // 设置大头针各项属性
    10     annotation.title = @"我的大头针";
    11     annotation.subtitle = @"我的大头针--子标题";
    12     annotation.coordinate = coordinate;
    13     // 在地图上添加大头针
    14     [self.mapView addAnnotation:annotation];
    15 }

    3.1系统MKAnnotation各项属性,都是只读的

     1 #import <CoreGraphics/CoreGraphics.h>
     2 #import <CoreLocation/CoreLocation.h>
     3 #import <MapKit/MKFoundation.h>
     4 
     5 @protocol MKAnnotation <NSObject>
     6 
     7 // Center latitude and longitude of the annotion view.
     8 // The implementation of this property must be KVO compliant.
     9 @property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
    10 
    11 @optional
    12 
    13 // Title and subtitle for use by selection UI.
    14 @property (nonatomic, readonly, copy) NSString *title;
    15 @property (nonatomic, readonly, copy) NSString *subtitle;
    16 
    17 // Called as a result of dragging an annotation view.
    18 - (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate NS_AVAILABLE(10_9, 4_0);
    19 
    20 @end

    4.自定义大头针的.h文件,.m文件不需要修改

    1 #import <MapKit/MapKit.h>
    2 
    3 @interface QKAnnotation : NSObject<MKAnnotation>
    4 
    5 @property (nonatomic,assign) CLLocationCoordinate2D coordinate;
    6 @property (nonatomic, copy) NSString *title;
    7 @property (nonatomic, copy) NSString *subtitle;
    8 
    9 @end

    #注意:1.MKAnnotation是NSObject, 它是MKAnnotationView的一个属性

          2.MKAnnotationView继承自UIView

        3.自定义大头针继承自NSObject. 遵守<MKAnnotation>协议,就获得了协议里申明的属性和方法.从3.1的代码可以看出,系统MKAnnotation对象,整个.h文件都是协议,coordinate是必须实现的属性,把readOnly删掉,并为coordinate属性添加assign.

  • 相关阅读:
    软工实践练习一——使用Git进行代码管理心得
    作业1.3——Android平台的开发环境的发展演变
    作业1.2——软件工程的实践项目的自我目标
    SVN冲突解决
    sea.js及三种加载方式的异同
    php中AJAX请求中使用post和get请求的区别
    Vue-起步篇:Vue与React、 Angular的区别
    页面常见布局以及实现方法--flex
    requestAnimationFrame之缓动的应用
    bootstrap中table页面做省市区级联效果(级联库见前面级联编辑)(非select下拉框)
  • 原文地址:https://www.cnblogs.com/oumygade/p/4168948.html
Copyright © 2011-2022 走看看