iOS 地图使用(一)

作者: iOS_成才录 | 来源:发表于2015-11-12 19:32 被阅读3031次

    一、地图的基本使用

    • 设置地图类型
              // 1.设置地图显示类型
               /**
                   MKMapTypeStandard = 0,  // 标准
                   MKMapTypeSatellite,     // 卫星
                   MKMapTypeHybrid,        // 混合(标准+卫星)
                   MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立体卫星
                   MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立体混合
                */
               self.customMapView.mapType = MKMapTypeStandard;
           
    
    • 设置地图的其他属性(操作项)
      • 注意:设置对应的属性时,注意该属性是从哪个系统版本开始引入的,做好不同系统版本的适配
      // 是否可以缩放
      self.customMapView.zoomEnabled = NO;
      // 是否可以滚动
       self.customMapView.scrollEnabled = NO;
      // 是否可以旋转
       self.customMapView.rotateEnabled = NO;
      // 是否显示3D
      self.customMapView.pitchEnabled = NO;    
    
    • 设置地图其它属性(显示项)

    // 是否显示指南针
    self.customMapView.showsCompass = YES;
    // 是否显示比例尺
    self.customMapView.showsScale = YES;
    // 是否显示交通
    self.customMapView.showsTraffic = YES;
    // 是否显示建筑物
    self.customMapView.showsBuildings = YES;

    + 设置地图显示用户位置( 需要请求用户授权 )
    - 效果: 
     + 会在地图上显示一个蓝色圆点(大头针),`标示用户当前所在位置`, 地图`不会`跟着用户移动而移动
    代码: self.customMapView.showsUserLocation = YES;
    
    + 设置地图的用户追踪模式( 需要请求用户授权 )
    - 效果: 
     + 会在地图上显示一个蓝色圆点(大头针),`标示用户当前所在位置`, 地图`会`跟着用户移动而移动, 而且自动放大地图到合适比例
    - 1.创建CLLocationManager对象请求授权
     ```objc
    -(CLLocationManager *)locationM
                  {
                      if (!_locationM) {
                          _locationM = [[CLLocationManager alloc] init];
                          if ([_locationM respondsToSelector:@selector(requestAlwaysAuthorization)]) {
                              [_locationM requestAlwaysAuthorization];
                          }
                      }
                      return _locationM;
                  }
    
    • 2.设置地图的用户追踪模式
    • 注意:
      • 设置此属性会使用到用户的位置隐私,所以需要请求用户授权,否则没有效果
    ```objc
    

    MKUserTrackingModeNone = 0, // 不跟随
    MKUserTrackingModeFollow, // 跟随用户位置
    MKUserTrackingModeFollowWithHeading, // 跟随用户位置,并跟随用户方向
    */
    [self locationM];
    self.customMapView.userTrackingMode = MKUserTrackingModeFollowWithHeading;
    ```

    二、使用

    显示地图.png
    • 1.导入框架MapKit.framework
    框架MapKit.png
    • 2.进行请求授权,Info.plist文件中配置key
    配置key.png
    • 3.布局界面,在控制器的view上拖拽一个mapView控件,用来显示地图
    #import "ViewController.h"
    #import <MapKit/MapKit.h>
    #import <CoreLocation/CoreLocation.h>
    
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet MKMapView *mapView;
    
    /** 位置管理者 */
    @property (nonatomic, strong) CLLocationManager *locationM;
    
    @end
    
    @implementation ViewController
    #pragma mark -懒加载
    -(CLLocationManager *)locationM
    {
        if (!_locationM) {
            _locationM = [[CLLocationManager alloc] init];
            
            // 版本适配
            if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
                [_locationM requestAlwaysAuthorization];
            }
    
        }
        return _locationM;
    }
    
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
     
    //    MKMapTypeStandard = 0, // 标准地图
    //    MKMapTypeSatellite, // 卫星云图
    //    MKMapTypeHybrid, // 混合(在卫星云图上加了标准地图的覆盖层)
    //    MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立体
    //    MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D混合
        // 设置地图显示样式(必须注意,设置时 注意对应的版本)
        self.mapView.mapType = MKMapTypeStandard;
        
        
        // 设置地图的控制项
        // 是否可以滚动
    //    self.mapView.scrollEnabled = NO;
        // 缩放
    //    self.mapView.zoomEnabled = NO;
        // 旋转
    //    self.mapView.rotateEnabled = NO;
        
        
        // 设置地图的显示项(注意::版本适配)
        // 显示建筑物
        self.mapView.showsBuildings = YES;
        // 指南针
        self.mapView.showsCompass = YES;
        // 兴趣点
        self.mapView.showsPointsOfInterest = YES;
        // 比例尺
        self.mapView.showsScale = YES;
        // 交通
        self.mapView.showsTraffic = YES;
        
        
        // 显示用户位置
        [self locationM];
        // 显示用户位置, 但是地图并不会自动放大到合适比例
    //   self.mapView.showsUserLocation = YES;
        
        /**
         *  MKUserTrackingModeNone = 0, 不追踪
         MKUserTrackingModeFollow,  追踪
         MKUserTrackingModeFollowWithHeading, 带方向的追踪
         */
        // 不但显示用户位置, 而且还会自动放大地图到合适的比例(也要进行定位授权)
        // 不灵光
        self.mapView.userTrackingMode = MKUserTrackingModeFollowWithHeading;
    }
    @end
    

    相关文章

      网友评论

        本文标题:iOS 地图使用(一)

        本文链接:https://www.haomeiwen.com/subject/xishhttx.html