地图 Part1 - 定位及大头针的基本使用

一.MapKit

  • 作用 : 用于地图展示

  • 如大头针,路线,覆盖层展示等(着重界面展示)

  • 使用步骤

    • 导入头文件
    1. #import <MapKit/MapKit.h>
  • MapKit有一个比较重要的UI控件

    • MKMapView, 专门用来地图显示

二.地图的基本使用

0.首先在storyboard上添加一个地图控件 - MapKitView

  • 连线控制器
  1. @IBOutlet weak var mapView: MKMapView!

1.设置地图的类型

  • 方法
  1. // 可根据地图类型自己设定
  2. mapView.mapType = .standard
  • 地图的类型
  1. @available(iOS 3.0, *)
  2. public enum MKMapType : UInt {
  3. case standard // 普通地图 (默认)
  4. case satellite // 卫星云图
  5. case hybrid // 混合地图(卫星云图+普通地图)
  6. @available(iOS 9.0, *)
  7. case satelliteFlyover // 3D卫星地图
  8. @available(iOS 9.0, *)
  9. case hybridFlyover // 3D混合卫星地图(3D卫星地图+普通地图)
  10. }

2.设置地图的操作项

  • false就是取消这些功能
  1. // 缩放
  2. mapView.isZoomEnabled = false
  3. // 旋转
  4. mapView.isRotateEnabled = false
  5. // 滚动
  6. mapView.isScrollEnabled = false

3.设置地图的显示项

  1. // 设置地图显示项(3D卫星混合信息)
  2. if #available(iOS 9.0, *) {
  3. mapView.showsCompass = true // 指南针
  4. mapView.showsTraffic = true // 交通
  5. mapView.showsScale = true // 比例尺
  6. }
  7. // 设置地图显示项
  8. mapView.showsBuildings = true // 建筑物
  9. mapView.showsPointsOfInterest = true // 兴趣点

4.在iOS 8.0之后定位需要主动授权

  • 懒加载位置管理者,请求授权写在里面
  1. lazy var locationM : CLLocationManager = {
  2. let locationM = CLLocationManager()
  3. if #available(iOS 8.0, *) {
  4. // 前后台授权
  5. locationM.requestAlwaysAuthorization()
  6. }
  7. return locationM
  8. }()
  • 外界调用locationM的get方法,执行授权
  • 定位,但不会追踪
  1. _ = locationM

5.设置用户的追踪模式

  • 有一个缺陷

    • 只要动一下地图,就不再追踪用户的位置(不是很灵敏)
  1. // 带方向的追踪
  2. mapView.userTrackingMode = .followWithHeading
  • 其他追踪模式
  1. @available(iOS 5.0, *)
  2. public enum MKUserTrackingMode : Int {
  3. case none // 不追踪,也不会显示用户的位置(相当于showsUserLocation为false)
  4. case follow // 追踪,会显示用户的位置showsUserLocation为true
  5. case followWithHeading // 带方向的追踪,showsUserLocation为true
  6. }

6.代理方法

  • mapView设置代理
  1. mapView.delegate = self
  • 代理方法
6.1 当用户位置改变时
  1. /// 当用户位置改变时就会来到这个方法
  2. /// 在地图上显示一个蓝色的圆点来标注用户的位置
  3. ///
  4. /// - Parameters:
  5. /// - mapView: 地图视图
  6. /// - userLocation: 大头针数据模型
  7. func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
  8. // print("用户位置改变")
  9. // 大头针的标题和子标题
  10. userLocation.title = "我是标题
  11. iOS 地图定位及大头针的基本使用的更多相关文章

      1. iOS | 地图定位
      1. 在IOS开发中,最常见的功能之一就是地图定位功能,不单单是百度地图,高德地图等专业的地图导航软件,还有美团,咕咚等一些美食购物类和运动类也需要这样的功能,所以学会这项技能是一名IOS开发工程师必须的. ...

      1. iOS地图 -- 定位初使用
      1. iOS的定位服务用到的框架是#import <CoreLocation/CoreLocation.h> 定位中用到的类是CLLocationManager 一.iOS8.0之前的定位 向用 ...

      1. 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
      1. iOS8之后,如果应用中用到了地图定位,那么点击设置->隐私->定位服务 再点击该应用有时候会出现闪退问题,其原因是iOS8之后定位中添加了 NSLocationWhenInUseDesc ...

      1. iOS 地图(添加大头针)
      1. 首先在工程中导入MapKit.framework库文件 #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <U ...

      1. iOS地图 -- 定位中的CLLocation的介绍与小练习
      1. 通过定位练习,熟悉CLLocation 在上篇笔记中提到了CLLocation类,这里通过练习来讲解一下这个类,类中包含了获取到的用户位置的信息 coordinate --> 坐标,经度和纬度 ...

      1. ios8版本地图定位注意点
      1. 学习ios地图定位 我先定义一个属性: @property (weak, nonatomic) IBOutlet MKMapView *mapV; 然后在项目运行时初始化该属性一些参数: //设置地图 ...

      1. iOS之定位与地图
      1. 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用 和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一 ...

      1. IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息
      1. IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocati ...

      1. iOS 获取用户授权的用户隐私保护-地图定位
      1. 获取用户授权的用户隐私保护地图定位示例://导入定位框架#import<CoreLocation/CoreLocation.h>@interfaceViewController()< ...

    1. 随机推荐

        1. 深入理解JS 执行细节
        1. javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等 ...

        1. 首个threejs项目-前端填坑指南
        1. 第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水好深,满满的都是坑,填都填不过来.经过老板20天惨无人道的摧残,终于小有成就. 因为第一次搞 ...

        1. Js 变量声明提升和函数声明提升
        1. Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

        1. 【原】AFNetworking源码阅读(二)
        1. [原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...

        1. 多线程爬坑之路-Thread和Runable源码解析
        1. 多线程:(百度百科借一波定义) 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提 ...

        1. Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)
        1. --reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有 ...

        1. AbpZero--2.如何启动
        1. 1.直接启动 VS中直接启动 2.IIS站点 IIS中配置一个站点来启动(推荐) 3.登录 系统默认创建2个用户 默认用户名:admin 密码:123qwe 租户:Default  默认用户名:adm ...

        1. python 3.5 成功安装 scrapy 的步骤
        1. http://www.cnblogs.com/hhh5460/p/5814275.html

        1. Sass之坑Compass编译报错
        1. 前段时间在使用Compass时遇到了其为难处理的一个坑,现记录到博客希望能帮助到各位. 一.问题: 利用Koala或者是gulp编译提示如下,截图为koala编译提示错误: 二.解决办法 从问题截图上 ...

        1. “风投云涌”:那些被资本看中的IT企业的风光与辛酸
        1.      进入七月份以来,纷享销客获得D轮融资1亿美元,撼动业界,资本与IT联姻令一部分创业者眼红的同时,没有人注意到背后的风险. 科技与资本的结合,是当今经济社会前行的宏大主题.相关统计显示,软件行 ...