前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ios地图小例子和手势的使用 供大家参考一下呦

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

作者头像
用户1219438
发布2018-02-01 11:40:29
8030
发布2018-02-01 11:40:29
举报
文章被收录于专栏:AliceAlice

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

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

效果图:

具体代码

导入框架:MapKit.framework

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

代码语言:javascript
复制
#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的代码

代码语言:javascript
复制
#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 的响应的设置并将它加到跟视图中

//添加一个标记

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

代码语言:javascript
复制
- (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];
    
}

//手势长按的实现

代码语言:javascript
复制
-(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的代理方法-显示标识的方法

代码语言:javascript
复制
-(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;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档