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

地图 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 = "我是标题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值