iOS开发之技能点iOSiOS

iOS 地图使用(一)

2015-11-12  本文已影响3031人  iOS_成才录

一、地图的基本使用

          // 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;
              }
```objc

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

二、使用

显示地图.png 框架MapKit.png 配置key.png
#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
上一篇 下一篇

猜你喜欢

热点阅读