Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(5) 小结

        经过不断试用与修改,这个查看器最终还是完成了设计、实现。查看器,顾名思义,没有编辑功能:说的白一点,只是一个以OpenStreetMap为底图的显示装置罢了。和专业GIS相比,这款基于插件的OpenStreetMap瓦片查看器客户端显得单薄。和消费类GIS(如面向浏览器的地图API)相比,它是本地的,似乎和Native应用更加合拍。

       其实一直以来想利用业余时间做这样一个工具,使得非计算机专业的工程师们可以拥有一款支持漫游、标图、动画效果的轻量级地理信息插件,特别是掌握C++、C#等本地工具的工程师们可以不经学习即能获得GIS二次开发能力,目前看来,已经做到了~~我们看看这些效果。

     代码见:colorEagleStdio / qplanetosm · GitCode

     最新的Qt6适配见  从QMake到CMake-带有插件与ActiveX的Qt .pro工程向MSYS2-CMake移植实验_丁劲犇的博客-CSDN博客

1、在Qt中引入planetosm widget

      通过Qt designer 的插件功能,我们可以方便的引入OSM瓦片查看器客户端:
Center

这使得这款查看器可以在windows, Linux下运行,比如

1.1 Qt widget in RaspberryPI (ARM)

Center
 

 

1.2 Qt widget in Ubuntu

Center
 

2、在Windows下使用ActiveX

      托ActiveQt的福,Widgets 直接可以发布为 ActiveX控件,从而使得外部程序如 C#, MFC 开发的东东可以直接使用:
Center

3、外部开发接口-简单并直观

在第一篇文章的github链接里,有说明!
可以看一看操作的接口,如何标绘一个点到地图上:
string res = axqtaxviewer_planetosm.osm_layer_call_function("geomarker1",
"function=update_point;name=哈哈;type=1;" +
"lat=35.2;lon=101.783;" +
"style_pen=2;color_pen=0,0,255,128;width_pen=3;" +
"style_brush=1;color_brush=0,255,0,128;" +
"color_label=0,0,255,96;weight_label=99;size_label=12;" +
"width=16;height=20;");
在上面的操作中,C#调用的是函数 osm_layer_call_function,这个函数有两个参数。第一个参数表示要调用哪个图层的功能,也就是图层的名字;第二个参数是调用功能的参数表,为分号分割参数对,等号分割键、值的字符串。通过这个统一的接口,可以访问各个插件(图层)提供的几十种功能。我们也可以插入一个多边形:
string res = axqtaxviewer_planetosm.osm_layer_call_function("geomarker1",
"function=update_polygon;name=ID4;type=4;"+
<"lat0=12.2;lon0=67.3;"+
"lat1=14.3;lon1=62.8;"+
"lat2=22.7;lon2=66.5;"+
"lat3=11.5;lon3=72.2;"+
"lat4=10.8;lon4=69.4;"+
"style_pen=2;color_pen=0,0,255,128;" +
"width_pen=3;style_brush=1;color_brush=0,255,0,128;");

 并顺带为标记添加上文字注释,这些注释可以在用户点击时弹出:
res = axqtaxviewer_planetosm.osm_layer_call_function("geomarker1",
"function=update_props;name=ID2;" +
"LABEL=Neimeng;EXPRESS=YunDa;Pero=NORMAL;" +
"CheckTime=2014-12-30 07:18:32;" +
"From=Huhehaote;To=YinChuan");

在Qt内部,除了上述方式,还有等效的QMap<QString, QVariant> 映射方式,对一个图层pif, 执行:
			QMap<QString, QVariant> inPara, outPara;
			inPara["function"] = "update_point";
			inPara["name"] = "YUNDA-EXPRESS-23837364";
			inPara["lat"] = lat;
			inPara["lon"] = lon;
			inPara["color_pen"] = "0,0,255,128";
			inPara["color_brush"] = "0,0,0,64";
			inPara["width"] = "7";
			inPara["height"] = "7";
			inPara["type"] = 1;
			outPara = pif->call_func(inPara);

就会插入一个点。

           如果想为这个地图开发新的图层和插件,只要仿照工程中两个插件 grid, geomarker 产生自己的插件即可。配合主线程的定时器,不停的更新图元的坐标,便产生了动画效果。

-----------------------------------------------------

4、后记

        非计算机专业的工程师们大量使用本地开发工具,在不同的领域创造价值。与前端工程师不同,OpenStreetMap 对应的Web前端对他们是陌生的,希望这款小工具能够帮助他们在需要时利用几天时间迅速在本地应用程序中获得简单的GIS体验,追逐心中的梦想。这款查看器本身在不断更新,编译源代码是最好的方式。由于依赖项很多,我在发布时,最后只能使用Depwalker等软件把动态链接库弄妥。最好的办法是把编译出的Release东东拷贝到 Qt库的bin文件夹下,而后调用

 

idc.exe .\qtaxviewer_planetosm.dll /regserver
注册控件(XP下采用Qt5.3.2+regsvr32.exe注册会有问题)。
      *在  win7 下,需要使用管理员注册。使用用户权限也是可以注册的,但仅能本用户使用。
      为了方便windows用户尝试,使用Qt工具链预生成了 一个包,有兴趣的人可以下载。第一篇介绍里面有git克隆地址
 
      
     

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
离线地图_openstreetmap_postgresql_瓦片 离线地图_openstreetmap_postgresql_postgis_mapnik_osm2pgsql_osm数据 写于20150414 关于软件地址 事先说明这其实就是我全部放到百度网盘空间里了。 所以万一一不小心我手抖删了,请mail我。 [email protected] 软件包括 leaflet osm里面中国和台湾的数据 openlayers geoserver mabox_studio mapnik 和生成瓦片工具需要的前置包等 postgresql osm2pgsql postgis python 一次只能上传一份那我就少点多几份吧: 介绍(免积分) http://download.csdn.net/detail/a137015127302/8594877 如果懒得自己慢慢找,我想你不介意花点积分的吧。 1.postgreSql_1.&postgis_install http://download.csdn.net/detail/a137015127302/8594903 2.postgreSql_2.mapnik&python_install http://download.csdn.net/detail/a137015127302/8594915 3.postgreSql_3.环境变量配置_osm数据导入 http://download.csdn.net/detail/a137015127302/8594919 4.postgreSql_4.生成图片瓦片byMapnik http://download.csdn.net/detail/a137015127302/8594921 其他:postgreSql_psql_乱码问题 http://download.csdn.net/detail/a137015127302/8594937 上传什么的好烦-- 我再试一次要是还是不能上传我就不玩了。切~ 核心内容(英文版公开资料):http://wiki.openstreetmap.org/wiki/Creating_your_own_tiles 以下本人写的中文版本的核心:只要注意这个基本上就没什么大问题了。 当然你要是懒得自己一步一步走,我想你应该也不介意多花点积分的。 摘录 首先版本请用 postgresql-9.3.6-2-windows.exe + postgis-bundle-pg93x32-setup-2.1.5-1.exe 因为至少如果是 postgresql-9.4.1-3-windows.exe + postgis-bundle-pg94x32-setup-2.1.7-1.exe 存在sample数据库无法创建问题。 同时32位下中文客户端提示信息异常问题,你只能改为英文显示,但是又会有warn信息提示你与本地不符(很烦不是么) 所以结论最新的未必就是最好的。 而且貌似他们已经开始放弃32位了。 还有这个2.1.7貌似是赶工出来的,因为提示信息写的是支援9.3而事实是否定的。 以上是我重装了n多遍的结论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丁劲犇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值