zoukankan      html  css  js  c++  java
  • 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;
    }
    
    对上述的代码,有任何疑问,可以在下方留言。 也可以给我发邮件咨询:673658917@qq.com 或者是直接加qq:673658917 转载请注明出处,谢谢合作。 睡觉舒服,那是给死人准备的,加油吧,一年后你会感谢现在的自己的。
  • 相关阅读:
    Kubernetes
    Kubernetes
    Kubernetes
    Kubernetes
    Kubernetes
    代价函数——二次代价函数、交叉熵(cross-entropy)、对数似然(log-likelihood cost)(04-1)
    MNIST手写数字分类simple版(03-2)
    tensorflow非线性回归(03-1)
    python三目运算符
    tensorflow版helloworld---拟合线性函数的k和b(02-4)
  • 原文地址:https://www.cnblogs.com/lishanshan/p/4886349.html
Copyright © 2011-2022 走看看