ios地图小例子和手势的使用 供大家参考一下呦

最近做了一个小例子 做点笔记 供刚入职场的菜鸟学习,也供自己记忆。

目标:在地图上加上标记  同时复习一下手势的使用

效果图:

具体代码

导入框架:MapKit.framework

创建一个新类 继承NSObject  叫做MyAnnotation   并在后边加上<MKAnnotation>

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MyAnnotation : NSObject<MKAnnotation>
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@end

 viemController.m的代码

#import "ViewController.h"
#import <MapKit/MapKit.h>
#import "MyAnnotation.h"
@interface ViewController ()<MKMapViewDelegate>
@property(nonatomic,strong)MKMapView *mapView;//添加一个MApView
@property(nonatomic,strong)MKAnnotationView *annotationView;//添加一个标记view
@end

//对mapView 的响应的设置并将它加到跟视图中

//添加一个标记

//创建手势实现长按能够加一个标记

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //对mapView 的响应的设置并将它加到跟视图中
    _mapView = [[MKMapView alloc]initWithFrame:self.view.frame];
    _mapView.mapType = MKMapTypeStandard;
    _mapView.delegate = self;
    [self.view addSubview:_mapView];
    
    //对annotation 的设置
    _annotationView = [[MKAnnotationView alloc]initWithFrame:self.view.frame];
    
    
    //添加一个标记
    //设置标记
    MyAnnotation *annotation = [[MyAnnotation alloc]init];
    //设置经纬度
    annotation.title = @"中国";
    annotation.subtitle = @"河北";
    annotation.coordinate =CLLocationCoordinate2DMake(40, 110);
    
    [self.mapView addAnnotation:annotation];
    //设置显示标识的内容
    [_mapView setCenterCoordinate:annotation.coordinate animated:YES];
    
    //创建手势实现长按能够加一个标记
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPress:)];
    [self.view addGestureRecognizer:longPress];
    
}

//手势长按的实现

-(void)longPress:(UILongPressGestureRecognizer *)sender
{
    //获得点击点的坐标
    CGPoint point = [sender locationInView:self.view];
    //将点击的地图上点转换成经纬点
   CLLocationCoordinate2D Mycoordinate= [self.mapView convertPoint:point toCoordinateFromView:self.mapView];
    MyAnnotation *annotation = [[MyAnnotation alloc]init];
    annotation.coordinate = Mycoordinate;
    annotation.title = @"河北";
    annotation.subtitle = @"石家庄";
    
    [self.mapView addAnnotation:annotation];
    
}

#pragma mark-mapView的代理方法-显示标识的方法

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    //创建一个标识的ID
    static NSString *annotationID = @"annotation";
    
    //先从用户的缓存里找大头针视图
    MKPinAnnotationView *view = (MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:annotationID];
    //如果没有大头针视图,自己进行创建
    if(!view)
    {
        view = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annotationID];
    }
    //对大头针视图的属性进行设置
    //设置标记为传进来的标记  显示气泡 大头针的颜色
    view.annotation = annotation;
    view.canShowCallout = YES;
    view.pinColor  = MKPinAnnotationColorRed;
    
    //左边的副视图
    view.leftCalloutAccessoryView =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"0.png"]];
    
    return view;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GIS讲堂

OL3+中链家地图找房功能实现

看看链家的地图找房功能,其实比较简单,主要包涵: 1)基于行政区划的统计展示; 2)分级别展示,逐级钻取。

25430
来自专栏滕先生的博客

UIGestureRecognizer  手势识别一、概念介绍二、UIView 的分类三、UIGestureRecognizer 抽象类四、UIGestureRecognizerDelegate 代理

44980
来自专栏非著名程序员

基础篇章:关于 React Native之 ActivityIndicator 组件的讲解

(友情提示:RN学习,从最基础的开始,大家不要嫌弃太基础,会的同学请自行略过,希望不要耽误已经会的同学的宝贵时间) 今天我们讲解的这个控件的非常简单,那就是Ac...

22070
来自专栏游戏杂谈

as3与php 上传多张图片demo

2、在一次添加的图片中如果超出最大上传数,忽略本次选中的所有图片(又得重新选一次,此现象普通存在于目前各大网站的flash批量上传中)

21820
来自专栏一“技”之长

iOS中UITextView方法解读 原

@property(nonatomic,assign) id<UITextViewDelegate> delegate;

10040
来自专栏滕先生的博客

地图相关 MapKit框架介绍MKMapView控件对象的属性和方法MKAnnotation 大头针模型类大头针view显示类:MKPinAnnotationView 继承于 MKAnnotation

36370
来自专栏非著名程序员

基础篇章:关于 React Native 之 Picker 组件的讲解

(友情提示:RN学习,从最基础的开始,大家不要嫌弃太基础,会的同学请自行略过,希望不要耽误已经会的同学的宝贵时间) 今天我们就讲Picker ,顾名思义就是选择...

19380
来自专栏向治洪

React Native之StyleSheet样式表

概述 在React Native中,StyleSheet是实现了类似Web中CSS样式表的功能。最简单的使用如下,先定一个StyleSheet的样式表,然后在V...

18870
来自专栏一“技”之长

iOS高质量的动画实现解决方案——Lottie

    真心的认为Lottie是一款十分优秀且实用的动画开发库,不只对于iOS和android原生开发者来说其让复杂动画的实现几乎没有成本,对于设计师来说,它的...

16820
来自专栏一“技”之长

iOS中UIImageView用法总结 原

- (instancetype)initWithImage:(UIImage *)image;

6410

扫码关注云+社区

领取腾讯云代金券