iOS学习笔记

高德地图

2017-02-25  本文已影响463人  changsanjiang

在我国所有的地图产品必须至少经过GCJ-02加密。就是所谓的火星坐标。苹果自身的CoreLocation是没有经过加密的。所以定位得到的经纬度如果直接添加标注到地图上面的话,就会发生偏移。

百度地图GCJ-02的基础上又经过了一次加密,所以高德地图和百度地图的坐标其实不一样的。

高德地图新版的SDK推出了一个功能就是室内外地图一体化。在3D的基础上实现的。现在北京的各大商场都支持。

高德地图2D渲染使用(UIScrollView+CATiledLayer) 实现的。
3D主要使用的OpenGLES渲染的。

以下是高德地图结构:

标注:
地图里面的标注主要分两种:
单点 - Annotation.
多点 - Overlay.
Annotation 对象 - 实现 MAAnnotation 协议(MAPointAnnotation).
Annotation 视图 - 继承 MAAnnotationView 类(MAPointAnnotation).
Overlay 对象 - 实现MAOverlay 协议 (MAPolyline/MAPolygon/MACircle).
Overlay 渲染器 - 继承 MAOverlayRenderer 类 (MAPolylineRenderer/MAPolygonRenderer/MACircleRenderer).
添加 Annotation到地图上的流程。。

Overlay的添加:

2D 地图:

2D的话就是创建一个Path,或者说直接在Context上直接用CGGraphics什么什么的方法进行画图就可以了。

3D 地图

3D的话需要重载两个函数,一个是重新计算openGL坐标,一个是在glRender里面进行绘制。高德在SDK里面提供了基本的绘制方法,画线,画面,如果有人openGL的水平很高的话,自己画也是可以的。。

搜索

兴趣点搜索就是用的很普遍的搜索某一区域的点。

逆地理编码是使用的最多的服务,就是当我们地理定位,得到一个经纬度的时候,我想知道我在那条街,哪个城市,都需要使用逆地理服务。

路径规划现在又三种 步行,驾车,还有公交。

附近搜索 这个附近搜索并不是搜索某个附近的兴趣点,他其实是基于云图的一个实时位置的一个检索和上传(存储)这样的一个功能主要应用场景有 智能派单, 附近的人等。目前有两种模式:

一种是在App端,可以把我们的实时位置上传,其他App的用户呢她可以检索这个位置,就是可以把上传位置的这个用户检索出来,显示出来。
第二种方式是可以结合开发者自己的数据,比如说 智能派单这种模式,我有快递员把自己的实时位置上传,然后在开发者自己的服务端我得到这些位置之后,我根据她的的评级,评分进行筛选,再把筛选后的结果下发给App。。这是两种应用模式。。

定位 有三种定位模式 WIFI, 基站, GPS,三种定位方式。。
iOS系统屏蔽掉了底层细节,使用最佳方案。当有GPS的时候选择GPS,因为GPS的精度是最高的。但是GPS并不是什么时候都有,如果室内,他没有信号了,这个时候他会选择WIFI,如果没有选择基站。

定位 首先她不依赖于地图,高德提供了一些简便的方法比如

导航功能

AMapNav这种就是应用内导航,她不会跳出本身的App.
导航SDK

  1. https://github.com/hadesh/MyRoute swift使用2D和搜索
  2. https://github.com/hadesh/tripdemo 高小德用车 - 出行类乘客端 Demo
  3. https://github.com/hadesh/iOS_3D_RecordPath 3D 记录路径并回放的Demo.
  4. https://github.com/hadesh/iOS_2D_RecordPath 2D记录路径并回放的Demo.
  5. https://github.com/hadesh/iOS_3D_ClusterAnnotation 点聚合 Demo.
  6. https://github.com/hadesh/iOS_MovingAnnotation_Demo annotation 动画Demo
  7. https://github.com/amapapi/iOS_3D_ClickOverlay 可选中 overlayDemo
  8. https://github.com/hadesh/AMapPlaceChooseDemo 地图中心选点 Demo.
上一篇下一篇

猜你喜欢

热点阅读