1、整体架构
SkeyeGisMap
由以下几局部组成:
cdt
只有一个文件, 来自 mapbox
的三角剖分库 earcut
, 其官网链接为: https://github.com/mapbox/earcut
core
地图外围, 次要定义了地图形态节点, 地图事件, 地图助手工具。
item
地图的可视化项(即地图容器)。
parser
地图矢量形态解析器 (暂只实现了 Esri Shapefile
格局解析)以及坐标参考。
style
地图款式加载解析相干, 个别状况下无需关怀。
其构造如图所示:
2、坐标系
SkeyeGisMap
中总共有四种坐标系:
-
1、屏幕坐标系 {Screen Coordinate System}
该坐标系就是字面意思, 所有的坐标对应屏幕像素坐标。
通常事件的原始坐标即是屏幕坐标。
另外,
SkeyeGisMap
中的地图事件不间接承受原始的{Qt Event}, 须要进行一些转换。 -
2、显示坐标系 {Display Coordinate System}
该坐标系是地图所有可视节点的 (顶点) 坐标系, 即执行绘制时应用的坐标。
-
3、世界坐标系(地图坐标系) {World Coordinate System}
SkeyeGisMap
应用EPSG:32650
做为世界坐标的参考系.次要来自于地图矢量形态解析器解析后产生的坐标, 通常不须要关注.
-
4、经纬度坐标系 {Lonlat Coordinate System}
SkeyeGisMap
应用EPSG:4326
做为经纬度坐标的参考系.
3、转换坐标系
对于地图自身, 只应用屏幕坐标, 显示坐标和地图坐标。
这三种坐标之间的转换由地图助手 MapAssistant
提供, 它位于 core/mapassistant.h
。
而地图坐标 (世界坐标) 与经纬度坐标的转换则由 CoordinateReference
提供, 它位于 parser/coordinatereference.h
。
4、操作地图
操作地图地图由地图助手 MapAssistant
提供。
MapAssistant
提供三种根底地图操作: 旋转、缩放、平移, 通常状况下无需调用(地图外部曾经调用)。
5、增加形态(因素)
如果要向地图中增加形态, 则须要扩大地图, 这部分将在 地图扩大
中给出。