- 操作系统:Windows 10
- Qt版本:5.12.8
这是一个基于CMake构建的工程,你可以在你自己的CMake工程里面添加它,或者是单独编译之后再将输出文件添加到自己的工程里面。
如果使用QtCreator,那么是非常方便的,你可以直接在QtCreator打开该工程的CMakeLists.txt文件,然后执行构建命令(Ctrl+B)编译工程。
编译成功之后,你可以在项目页面里面执行下面两部操作,完成执行文件的安装部署:
- 在CMake页里面修改
CMAKE_INSTALL_PREFIX
为自己希望的安装路径,并点击Apply Configuration Changes
; - 在Build的步骤页里面选择
targets
为install
; - 执行构建命令(Ctrl+B)。
此时,在安装路径下将会出现一个install文件夹,install文件夹内也包含一个GraphicsMapLibd.dll文件。
如果你使用CMake工程来包含这个库,那上面的办法确实很方便,可以在每次编译完之后部署最新的dll,同时调试源码也非常方便。不过如果你使用非CMake工程来使用这个库,那么请手动拷贝.h文件、lib文件、dll文件。
-
显示一个地图:
auto map = new GraphicsMap; map->setTilePath("E:/map/sate"); map->show();
-
隐藏滚动条:
map->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff); map->setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
-
设置缩放等级:
map->setZoomLevel(5);
-
切换瓦片资源类型:
map->setTilePath("E:/map/road");
-
设置鼠标中心缩放和鼠标拖动地图:
map->setDragMode(QGraphicsView::ScrollHandDrag); map->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
-
创建鼠标可交互地图:
auto map = new InteractiveMap; map->setTilePath("E:/map/sate"); map->show();
-
为可交互地图绑定地图操作器
-
手动添加地图元素:
map->scene()->addItem()
auto range = new MapRangeRingItem; // 距离环 range->setCoordinate({0,30}); range->setRadius(90); map->scene()->addItem(range); auto ellipse = new MapEllipseItem; // 圆 ellipse->setCenter({1.0, 30}); ellipse->setSize({20e3, 20e3}); ellipse->setBrush(Qt::green); map->scene()->addItem(ellipse);
- GraphicsMap:封装基础的地图加载算法
- InteractiveMap:封装地图交互的框架
- MapEllipseItem:圆形图形/椭圆图形
- MapLabelItem:文本标签,由标题和内容组成
- MapLineItem:线段
- MapObjectItem:图标对象
- MapPieItem:扇形,由三角形和梯形组成
- MapPolygonItem:多边形
- MapRangeRingItem:距离环
- MapRouteItem:航路
- MapTrailItem:轨迹线
- InteractiveMapOperator:地图操作器基类,定义处理交互事件的接口
- MapEllipseOperator:圆形操作器
- MapPolygonOperator:多边形操作器
- MapObjectOperator:图标对象操作器
- MapRouteOperator:航路操作器
- MapRangeLineOperator:测距操作器
- OpenGL窗口下,MapObjectItem::setIconColor的第二个对象开始渲染会变成黑色方块