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

一.MapKit

  • 作用 : 用于地图展示

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

  • 使用步骤

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

    • MKMapView, 专门用来地图显示

二.地图的基本使用

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

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

1.设置地图的类型

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

2.设置地图的操作项

  • false就是取消这些功能
// 缩放
mapView.isZoomEnabled = false
// 旋转
mapView.isRotateEnabled = false
// 滚动
mapView.isScrollEnabled = false

3.设置地图的显示项

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

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

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

5.设置用户的追踪模式

  • 有一个缺陷

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

6.代理方法

  • mapView设置代理
mapView.delegate = self
  • 代理方法
6.1 当用户位置改变时
/// 当用户位置改变时就会来到这个方法
/// 在地图上显示一个蓝色的圆点来标注用户的位置
///
/// - Parameters:
/// - mapView: 地图视图
/// - userLocation: 大头针数据模型
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) { // print("用户位置改变")
// 大头针的标题和子标题
userLocation.title = "我是标题

最新文章

  1. ThinkPHP 整合Bootstrap Ajax分页
  2. tftp服务器简单安装配置
  3. 推荐8个实现 SVG 动画的 JavaScript 库
  4. asp.net mvc页面javascript代码中如何使用razor
  5. APICloud全面支持WiFi真机同步和实时预览功能
  6. 【安卓特效】怎样给ImageView加上遮罩,点击时泛黑、或泛白、?
  7. jQuery基于ajax实现星星评论代码
  8. [XBee] ZigBee学习笔记
  9. 从源码角度深入理解LayoutInflater
  10. bzoj 1853: [Scoi2010]幸运数字 容斥
  11. SGU 190.Dominoes(二分图匹配)
  12. Javascript或jQuery方法产生任意随机整数
  13. 括号匹配问题(C++、堆栈)
  14. iOS关于应用内分享
  15. Java 水仙花数
  16. hdu_4046_Panda(树状数组)
  17. DocumentBuilderFactory.newInstance() 异常解决
  18. 自定义视图(SpringMVC)
  19. bzoj 3252: 攻略
  20. virtualenv是什么?virtualenv的安装及pycharm的配置和使用

热门文章

  1. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
  2. Python学习--04条件控制与循环结构
  3. TinyWeb v1.0 正式完成第一个Release版本(功能基于 libuv 跨平台库)
  4. hash表长度优化证明
  5. ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
  6. C#多线程之基础篇3
  7. Http请求
  8. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
  9. iOS 原生地图地理编码与反地理编码
  10. mysql开启慢查询日志及查询--windows