zoukankan      html  css  js  c++  java
  • 地图显示MapKit框架的使用

    在iOS开发中,我们使用Map Kit API开发地图应用.其核心是MKMapView类。MKMapView是显示地图的视图,它的委托协议是MKMapViewDelegate。使用Map Kit API时,需要导入MapKit框架。

    首先我们需要导入主头文件
           #import <MapKit/MapKit.h>
    MapKit框架使用须知:

    MapKit框架中所有数据类型的前缀都是MK
    MapKit有一个比较重要的UI控件:MKMapView,专门用于地图显示.

    一.设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置    
        MKUserTrackingModeNone :不跟踪用户的位置
        MKUserTrackingModeFollow :跟踪并在地图上显示用户的当前位置
        MKUserTrackingModeFollowWithHeading :跟踪并在地图上显示用户的当前位置,地图会跟随用户的前进方向进行旋转
    二.设置MKMapView的mapType设置地图类型(mapViewType是枚举类型)
        MKMapTypeStandard // 普通地图(比较常用,一般不需要考虑地形,只需要显示出街道即可)
        MKMapTypeSatellite // 卫星云图 (主要用于显示地形)
        MKMapTypeHybrid // 普通地图覆盖于卫星云图之上(上述2种的混合)
        MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0) // 地形和建筑物的三维模型
        MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0) // 显示道路和附加元素的Flyover

    三.MKMapView可以设置一个代理对象,用来监听地图的相关行为,常见的代理方法有:
    // 一个位置更改默认只会调用一次,不断监测用户的当前位置时每次都会调用这个方法,把用户的最新位置(userLocation参数)传进来.
    - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation;

    现在我们就来试一试,显示地图:

     1 #import "ViewController.h"
     2 //显示地图
     3 #import <MapKit/MapKit.h>
     4 //定位
     5 #import <CoreLocation/CoreLocation.h>
     6 @interface ViewController ()<MKMapViewDelegate> //代理方法
     7 //关键类:地图显示视图
     8 @property (nonatomic, strong)MKMapView *mapView;
     9 
    10 //定位管理器
    11 @property (nonatomic, strong)CLLocationManager *manager;
    12 
    13 @end
    14 
    15 @implementation ViewController
    16 
    17 //懒加载
    18 - (MKMapView *)mapView {
    19     if (!_mapView) {
    20         //视图设置为屏幕大小
    21         _mapView = [[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    22         //设置几个重要的属性
    23         _mapView.mapType = MKMapTypeStandard; //普通地图
    24         //设置代理
    25         _mapView.delegate = self;
    26         //缩放(默认就是YES,可以缩放的)
    27 //        _mapView.zoomEnabled = YES;
    28         //添加到父视图
    29         [self.view addSubview:_mapView];
    30     }
    31     return _mapView;
    32 }
    33 
    34 
    35 - (void)viewDidLoad {
    36     [super viewDidLoad];
    37     //懒加载
    38     [self mapView];
    39 }

    运行就可以看到地图了,但是这时候,你会发现你看到的不是中国地图,没错,因为你还没有定位,有可能你看到的地图就是USA的,你可以鼠标拖动屏幕,来移动到你想要看的地方.

    接下来我们就来将地图和坐标结合,显示具体位置.这个地方我们就需要用到之前学到的,定位框架CoreLocation了.

  • 相关阅读:
    webpack中设置jquery为全局对象
    JS判断不同web访问环境,主要针对移动设备,
    js比较两个日期天数差
    原生js跨域
    我们项目中用到的jsonp跨域
    Js跨域解决方法总结
    js call的使用,js call 方法实现继承
    windows下配置bower路径
    兼容弹层代码
    自定义下拉列表框(2015.1.30)
  • 原文地址:https://www.cnblogs.com/lovebugssun/p/5547659.html
Copyright © 2011-2022 走看看