overlay - ShenYj/ShenYj.github.io GitHub Wiki

地图

目前国内 iOS 开发可选方案主要有

  • 百度地图
  • 高德地图
  • 腾讯地图
  • 原生地图

三方地图框架的确很便捷,为我们封装了很多好用功能, 比如连最基础的地图缩放等级,在源生地图中默认也是不包含的

坐标系

境外统一为 WGS84, 国内高德与腾讯使用的是国测局的 GCJ02, 百度是二次加密后的 BD09

最常见的三个坐标系,除此之外,还有其他坐标系

覆盖物

地图覆盖物主要包含以下两类

  • Annotation
  • Overlay

Annotation 基本做地图必用的, 展示一些自定义样式大头针
Overlay 包含路线、图形等,以及一些手绘图自定义图片等

Overlay 其主要包含

  • MKPolyline: 比如路线
  • MKPolygon: 比如绘制矩形、不规则多边形等
  • MKCircle: 绘制圆形

自定义图片覆盖物可以通过自定义 Overlay 实现

MKPolygon

  • e.g. 绘制矩形

    let southWest = CLLocationCoordinate2D(latitude: 39.912804, longitude: 116.391462)
    let northEast = CLLocationCoordinate2D(latitude: 39.923593, longitude: 116.402614)
    
    let leftTop = CLLocationCoordinate2D(latitude: northEast.latitude, longitude: southWest.longitude)
    let leftDown = CLLocationCoordinate2D(latitude: southWest.latitude, longitude: southWest.longitude)
    let rightDown = CLLocationCoordinate2D(latitude: southWest.latitude, longitude: northEast.longitude)
    let rightTop = CLLocationCoordinate2D(latitude: northEast.latitude, longitude: northEast.longitude)
    
    /// 顺时针方向
    var coords = [leftTop, rightTop, rightDown, leftDown]
    
    /// 多边形
    let polygonOverlay = MKPolygon(coordinates: &coords, count: coords.count)
    mapView.addOverlay(polygonOverlay)

这里在设置坐标点时是顺时针方向, 之前在写百度地图绘制矩形时是传入了逆时针方向

效果图:

.

百度

.

MKPolygon 自定义图片覆盖物

⚠️ **GitHub.com Fallback** ⚠️