标题:Qt/C++地图标注点的添加删除移动旋转/指定不同图标和动图/拿到单击信号
作者:liudianwu
日期:2024-08-18 17:43
内容:
## 一、前言说明
标注点在地图开发中是最常见的应用场景之一,比如在地图上需要显示设备的位置,基本上都是添加标注点,指定图片和尺寸已经经纬度坐标位置。这个功能在每种地图内核中都提供的,这个并没有任何难点,在这个功能点上最大难题或者说是设计细节就是,标注点该如何对齐,比如水滴形状的图标一般是底部居中对齐更美观,刚好水滴的头在指定的经纬度坐标上,整个图标位于正上方。还有一种情况是圆形的图标,这种最美观的方式是中间居中对齐,也就是图片的中心点在指定的经纬度坐标上,更符合实际的情况,如果说是底部,则看起来可能会很怪。
不同地图内核提供了不同的函数设置图标位置,百度地图是通过setOffset设置偏移值,这个值需要自己根据图片的大小自己计算好再设置。高德地图是通过setAnchor指定位置字符串来设置,比如setAnchor('center')是中间居中,setAnchor('bottom-center')是底部居中,这种方式蛮好的,他会自己根据图片尺寸进行设置。天地图是通过设置marker的属性参数iconAnchor偏移值控制。腾讯地图很特殊,他是通过设置图标MarkerImage对象的anchor参数来控制的。
在marker标注点的旁边还可以显示一个跟随的文本,表示名称之类的信息,百度地图和高德地图都在marker对象的函数中就提供了处理,而天地图和腾讯地图需要自己new一个label对象,这个对象设置对应的位置为marker的位置来实现。
## 二、功能特点
1. 支持多种地图内核,默认采用百度地图,可选高德地图、天地图、腾讯地图等。
2. 同时支持在线地图和离线地图两种模式,离线地图方便在不联网的场景中使用。
3. 支持各种地图控件的启用,比如地图导航、地图类型、缩略图、比例尺、全景导航、实时路况、绘图工具、结果面板等。
4. 支持多种地图功能的动态启用禁用,比如地图拖曳、键盘操作、滚轮缩放、双击放大、连续缩放、地图测距等。
5. 提供众多js函数接口用于交互,参数极其丰富,能够想到的应用场景需求都有。
6. 统一的信号槽机制,地图中的结果统一信号发送出去,收到后根据type类型区分。
7. 支持地图交互,比如鼠标按下获取对应位置的经纬度。单击标注点弹出对应点的信息。
8. 支持添加标注、删除标注、移动标注、清空标注。
9. 标注点可以指定图标图片和尺寸,支持gif动图,支持指定以图片中心对齐还是底部中心对齐。可以设置旋转角度,带富文本提示信息。
10. 标注点事件支持单击发信号通知和自己弹框显示信息。
11. 提供地址转 ..