一、代码 https://github.com/mapbox/mapbox-gl-native
二、编译步骤 https://github.com/mapbox/mapbox-gl-native/tree/master/platform/qt
三、遇到的问题:
1、cmake执行过程中会用curl命令下载所需要的资源,所以需要在环境变量中设置curl的路径。curl要使用ssl版本。
2、因为网速或不可明说的原因,需要用科学方法上网。
3、如果网络慢,可能会导致下载超时。在文件cmake/mason.cmake中,找到执行curl的语句,把超时时间设置长一些。
4、cmake生成工程命令中,添加Qt的安装目录,例如:-DCMAKE_PREFIX_PATH=D:\Qt\Qt5.9.2_3\5.9.2\msvc2015_64。
5、cmake编译命令中,最后的编译器自定义指令 “-- /m” 删除,因为编译器并不能识别这个指令。
6、mbgl内部使用sqlite数据库,所以要正确放置sqlite插件的位置。即在exe同级目录下放置 sqldrivers/qsqlite.dll 。
否则运行时会抛出异常。
7、bug修改:
a、文件:asset_file_source.cpp
函数:acceptsURL
原因:如果url长度小于assetProtocol长度(url为空时),数组越界
相同bug:local_file_source.cpp
8、在main中添加token,token在mapbox官网注册获取。
// settings.setAccessToken("your token");
9、运行时会加载本地资源,如图标。资源使用Qt的资源文件管理来管理,文件为mbgl-qt项目的common.qrc。
资源文件中引用的文件,可以在下载的源码目录中找到。
10、运行时会使用mapbox的webAPI下载预定义的几种styles(json字符串),所以运行时也要注意上网方式。
11、软件使用方式,可以查看 mapwindow.cpp 中的事件处理函数。
四、附编译步骤