zoukankan      html  css  js  c++  java
  • iOS:UIMapView地图视图控件的简单使用

    可以通过设置MKMapView的mapViewType设置地图类型

    MKMapTypeStandard 普通地图
    MKMapTypeSatellite 卫星云图 
    MKMapTypeHybrid 普通地图覆盖于卫星云图之上
     

    @property (nonatomic) MKMapType mapType;  //地图类型

    @property (nonatomic) MKCoordinateRegion region;  //位置区域

    @property (nonatomic) CLLocationCoordinate2D centerCoordinate;//位置经纬度

    //位置区域范围(0~1)

    typedef struct {

        CLLocationDegrees latitudeDelta;

        CLLocationDegrees longitudeDelta;

    } MKCoordinateSpan;

     

    //位置经纬度

    typedef struct {

    CLLocationDegrees latitude;

    CLLocationDegrees longitude;

    } CLLocationCoordinate2D;

    //位置区域

    typedef struct {

    CLLocationCoordinate2D center;

    MKCoordinateSpan span;

    } MKCoordinateRegion;

    //在地图上设置显示区域

    - (void)setRegion:(MKCoordinateRegion)region animated:(BOOL)animated;

    - (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated;

     
    MapView会将一些事件传递给它的代理(遵守MKMapViewDelegate协议),代理方法如下:
    mapViewWillStartLoadingMap: 当地图界面将要加载时调用
    mapView:viewForAnnotation: 当地图上有一些动画效果展示加载时调用
    mapViewWillStartLocatingUser:当准备进行一个位置定位时调用
    mapView:regionDidChangeAnimated: 当显示的区域发生变化时调用
    mapView:didUpdateUserLocation:当用户位置发生变化时调用
     
     
    具体实例如下:
    1、导入CoreLocation/Mapkit框架
    2、拖入一个UIMapView控件到控制器中
    3、在ViewController.m文件中导入必要的库文件
    4、将MapView关联为IBOutLet属性,同时让ViewController类实现地图协议
    5、代码实现功能
    //显示地图
    - (void)viewDidLoad {
        [super viewDidLoad];
        //设置地图的属性
        self.mapView.mapType = MKMapTypeHybrid;
        
        //设置区域的经纬度坐标
        CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(40, 116);//(经度、纬度)
        
        //设置经纬度范围(越小越精确)
        MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
        
        //设置地图显示的区域
        self.mapView.region = MKCoordinateRegionMake(coordinate, span);
        
        //设置地图的代理
        self.mapView.delegate = self;
    }

    //实现地图协议

    #pragma mark -mapView的方法

    #pragma mark -地图开始加载
    -(void)mapViewWillStartLoadingMap:(MKMapView *)mapView
    {
        NSLog(@"开始加载地图");
    }
    #pragma mark -地图加载完毕
    -(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
    {
        NSLog(@"地图加载完毕");
    }
    #pragma mark -地图区域将要改变
    -(void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
    {
        MKCoordinateRegion region = mapView.region;
        
        NSLog(@"经度:%f,纬度:%f",region.center.latitude,region.center.longitude);
    }
    #pragma mark -地图区域已经改变
    -(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
    {
        MKCoordinateRegion region = mapView.region;
        
        NSLog(@"经度:%f,纬度:%f",region.center.latitude,region.center.longitude);
    }

    演示结果截图:

    加载调用了代理方法,输出为:

    2015-10-19 21:50:19.241 05-mapkit-MapView[7278:360386] 开始加载地图
    2015-10-19 21:50:19.261 05-mapkit-MapView[7278:360386] 地图加载完毕

    地图显示:

     
  • 相关阅读:
    raid0
    GitHub 标星 11000+,阿里开源的微服务组件如何连续 10 年扛住双十一大促?
    写给大家看的“不负责任” K8s 入门文档
    快速迁移 Next.js 应用到函数计算
    轻松搭建基于 Serverless 的 Go 应用(Gin、Beego 举例)
    阿里巴巴副总裁肖力:云原生安全下看企业新边界——身份管理
    从零开始入门 K8s | K8s 安全之访问控制
    深度解读!阿里统一应用管理架构升级的教训与实践
    CNCF 2019 年度报告重磅发布 | 云原生生态周报 Vol. 41
    HTML+CSS技术实现网页滑动门效果
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4893237.html
Copyright © 2011-2022 走看看