前言
最近开发的项目使用了一些第三方地图的功能,主要包括:
- 定位
- POI(附近,模糊)搜索
- 地理编码和逆编码
- 地图展示
- 标记点(大头针)
- 线段,图形,覆盖物(折线,直线,圆形,不规则图形)
- 导航(内部导航,跳转其他地图 App 导航)
- 地理围栏
主要包含了高德地图、谷歌地图等,其他的地图如百度地图,腾讯地图等参考相关文档其实差别也不大。
文章主要记录一下相关代码和一些集成调试踩过的一些坑,防止忘记,归个档。
废话不多说,先看效果:
定位
CoreLocation 框架
, CLLocationManager
类。
定位 - 系统原生
1 | // 1. 初始化 CLLocationManager 实例 |
定位 - 高德定位
- 在高德开放平台注册账号
- 新建应用
- 拿到 key,在 App 启动的时候设置
1 | // 设置 key |
定位 - Google 定位
- 在 https://cloud.google.com/maps-platform/ 平台注册开发者账号
- 申请 API key
1 | // 设置 API key |
POI(Point of Interest,兴趣点)&& 地理编码、逆编码 && 路径规划
POI(Point of Interest,兴趣点)&& 地理编码、逆编码 && 路径规划 - 高德地图
高德地图 SDK 封装了 AMapSearchObject 基类对象,具体的搜搜请求对象和响应对象都由子类去继承实现。
1 | // 1、初始化搜索对象,设置代理 |
POI(Point of Interest,兴趣点)&& 地理编码、逆编码 && 路径规划 - Google 地图
Google 地图这些 POI 搜索,导航数据这些,提供的是 HTTP API 请求调用的方式。
1 | // 谷歌地图 POI 关键词模糊搜索 |
标记点(大头针 annotation || Marker)
标记点(大头针 annotation || Marker)- 高德
1 | // 1. 创建地图对象 |
标记点(大头针 annotation || Marker)- Google
1 | // 创建 Google map |
Overlay && Polyline
Overlay && Polyline - 高德
1 | // 多线段的坐标点数组 |
Overlay && Polyline - Google
1 | // 多线段的坐标点数组 |
地理围栏
POI 围栏
行政区划 围栏
自定义圆形围栏
自定义多边围栏
1 | // 创建围栏对象 |
导航
跳转到第三方地图 App 发起导航,先要在 InfoPlist 文件里面配置 QueriesSchemes 字段
1 | <key>LSApplicationQueriesSchemes</key> |
发起导航:
1 | /// 地图导航模式 |
参考链接
分享个人技术学习记录和跑步马拉松训练比赛、读书笔记等内容,感兴趣的朋友可以关注我的公众号「by在水一方」。