• 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] 地图加载完毕

    地图显示:

     
  • 相关阅读:
    mysql获取给定时间段内的所有日期列表
    mysql中的年,月,日统计以及日历表的实现
    MySQL5.7安装配置
    获取ip地址
    Intellij热部署插件JRebel
    IntelliJ IDEA2018版热部署jrebel插件安装使用教程
    idea插件篇之java内存分析工具(JProfiler)
    mysql中的整除,取余
    SIMD.mul (SIMD) – JavaScript 中文开发手册
    Java面试题 : 如何确保N个线程访问N个资源的同时又不导致死锁
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4893237.html
Copyright © 2020-2023  润新知