iOS地图开发踩坑

最近的项目中研究iOS地图已经有些时日了,这里记录下获得用户位置权限的基本步骤与参考资料。

如文章有误或你的经验分享,欢迎指出与评论。

导入

import Mapkit 与CoreLocation

权限申请

iOS的权限设置需在info.plist进行设置:

iOS8-10:LocationWhenInUseUsageDescription:应用前台更新位置信息

iOS11+:LocationAlwaysUsageDescription,应用前后台均可获得位置更新信息

若同时希望,则可全部添加,代码检查权限,在下文中提到

注意:业务逻辑若有两个Map,第二个出现“是否保持XX选择“,而不弹出多个选项。

初始化

根据实际需求撰写:

协议

需增加Map与地图的delegate,可作为扩展:

不同权限用户申请的不同相应

添加代理方法(参考资料-踩坑-链接1):

此处有几个可选的种类:

  1. .authorizedWhenInUse:用户选择使用时启用
  2. .denied: 用户拒绝
  3. .notDetermined: 未选择
  4. .authorizedAlways:总是获取位置信息

此处为通常使用switch语句,若用户未响应,可添加UIAlertView:

调用位置成功之后

更新用户位置方法:

此处写法部分遇坑:使用以下方法设置区域:

center:设置center用户位置中心点

遇坑

  1. 申请定位权限窗口不弹出:可能是未添加所需权限(我已添加仍未弹出)
  2. 调用成功后写法

参考资料

获取iOS用户位置:

Documentation MapKitMKMapView

[iOS] 位置情報の取得 (Swift3編)

CoreLocation框架详解| Cowboy Tech

iOS App地图功能开发(1)

踩坑:

iOS 解决iOS 地图获取位置提示框不弹出

发表评论

电子邮件地址不会被公开。 必填项已用*标注