精华内容
下载资源
问答
  • Qt加载百度离线地图

    千次下载 热门讨论 2016-03-30 15:38:57
    Qt4.8.6加载百度离线地图,实现了街道图和卫星图的切换,实现了地图中标签的移动,实现了获取地图坐标并在Qt界面显示。绝对原创,保证可用
  • Qt加载百度离线地图 1.下载百度地图离线API 1.3 下载链接:http://download.csdn.net/detail/caoshangpa/9476608,网上虽然出现了2.0版本离线API,但是经试用,存在很多问题。该1.3版本离线API也是由高人制作,我...
  • QGIS加载离线瓦片地图

    千次阅读 2019-08-10 17:28:05
    1.瓦片地图准备 利用《全能地图下载软件》下载瓦片地图: 选择下载地图种类。 选择下载区域。 选择下载的级数。 ...3.QGIS加载瓦片地图 其中filename就是tms.xml文件的路径 4.加载完成效果 ...

    1.瓦片地图准备
    利用《全能地图下载软件》下载瓦片地图:
    选择下载地图种类。
    选择下载区域。
    选择下载的级数。
    在这里插入图片描述
    下载完后
    在这里插入图片描述
    2.TMS.XML文件新建编辑
    在这里插入图片描述
    编辑完后放在瓦片地图根目录
    在这里插入图片描述
    3.QGIS加载瓦片地图
    在这里插入图片描述
    其中filename就是tms.xml文件的路径
    4.加载完成效果
    在这里插入图片描述

    展开全文
  •   关注 微信公众号搜索"Qt_io_"或"Qt开发者中心"了解更多关于Qt、C++开发知识.。 笔者 - jxd
    说明

         在工程项目中经常会与地图打交道,那么客户端软件如何加载地图呢?一种是加载在线地图,该加载方式优点是有网络情况下编程较为方便;缺点是必须有网并不利于对地图进行显示编程。相对的另外一种加载方式就是离线地图了,该加载方式基本没有什么缺点但只是需要编程前对离线地图进行制作仅可。

         本文介绍离线加载方式并会介绍地图瓦片的下载与本地html加载、Qt加载离线html方法等。

    准备

         1、水经注万能地图下载器

         2、Google离线地图API3 (自行下载)

         3、Qt5 (注意安装Qt时将WebEngine模块勾选安装下)

    地图

         1、打开安装后的水经注万能地图下载器
    在这里插入图片描述

         2、选择google地图,并在软件右上侧区划选择需要下载的地图瓦片区域。
    在这里插入图片描述

         3、下载选择的区域
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

         4、将下载好的瓦片地图拷贝到"GoogleMap3API"中加载并打开
    在这里插入图片描述

    Qt加载

         1、在Qt Designer中拖入QWidget控件并将其提升类型至QWebEngineView类,对象名为WebEngineView。

         2、在.pro文件中加入"QT += webenginewidgets"

         3、构造出如下代码

    QString map = "/GoogleMapApi3/test.html";
    QString url = "file:///" + QCoreApplication::applicationDirPath() + map;
    ui->WebEngineView->load(QUrl(url));
    

         4、Qt加载如下
    在这里插入图片描述

    关注

    笔者 - jxd

    微信公众号搜索 “码农总动员” 或 微信扫描下方二维码,了解更多你不知道的XX,O(∩_∩)O

    在这里插入图片描述

    展开全文
  • QT实现加载百度离线地图

    万次阅读 热门讨论 2018-05-12 11:40:27
    Qt加载百度地图需要用到网络浏览器,在此采用webEngine模块,然后用webchannel进行qt与HTML/JavaScript的交互。 需求描述:软件加载百度地图,用鼠标在地图上选点,并进行标号,每次加1,最后连成一条路径,为...

    在Qt中加载百度地图需要用到网络浏览器,在此采用webEngine模块,然后用webchannel进行qt与HTML/JavaScript的交互。
    需求描述:软件加载百度地图,用鼠标在地图上选点,并进行标号,每次加1,最后连成一条路径,为后期工作做准备。

    百度地图API应用

    • 采用百度离线地图API2.1版本,网上均可以下载到,然后放到项目debug文件夹下
    • 瓦片地图下载,可以采用全能地图下载器,下载好后放到指定文件夹
    • 复制其中一个demo文件,根据自己需要的功能进行添加
    地图展示
    var map = new BMap.Map("map_demo",mapOptions);      // 设置街道图为底图
    var point = new BMap.Point(120.393751, 36.065743);   // 创建点坐标
    map.centerAndZoom(point,13);  // 初始化地图,设置中心点坐标和地图级别
    鼠标点击标记加序号

    addEventListener("click",function(e))对点击事件进行监听,参数e会返回当前点的地理位置,然后在此处用Marker添加标记,在实现每次标记加1时,因为标记本身是一个图片,因此可以考虑对标记加标签(定义一个全局的i,每点击一次加1),然后调整下位置(为了美观),背景设置为透明,基本就可以实现所要的效果。标签的颜色和背景可以使用Label类下的setStyle方法设置:

    label.setStyle({
        color:"white",
        backgroundColor:"0",
        border:"0";
        fontsize:"13px"
    });
    生成轨迹

    创建一个全局空数组,在上一步中监听点击事件,参数e返回位置点,将此点push到数组中,在生成轨迹时将数组序列直接传入Polyline ,然后map.addOverlay(polyline)即可加载标签。

    具体的类和方法参见百度地图JavaScript API 2.0示例Demo

    Qt与html交互

    地图全屏显示

    用wenEngine全屏显示地图时的代码:

    //mainwidow中的函数
    view=new QWebEngineView(this);
    view->load(url);
    view->show();

    添加:

    void MainWindow::resizeEvent(QResizeEvent *)
    {
        view->resize(this->size());
    }
    地图在一个 widget中显示

    在UI设计界面,我的qt5.9版本是找不到wenEngineView 组件的,解决方法:在ui设计页面,拖入widgets控件,然后提升为QWebengineView,如图所示:
    这里写图片描述
    在mainwindow函数中进行webengine初始化:

        QWebEnginePage *page=new QWebEnginePage(this);
        QWebChannel *channel=new QWebChannel(this);
        page->load(url);
        page->setWebChannel(channel);
        ui->webEngine->setPage(page);

    新版的Qt摒弃了webkit,采用webengine,在交互上简单了很多,例如生成路径按钮的槽函数:

    void MainWindow::on_generatetrack_clicked()
    {
        QString cmd="generate_track()";
        ui->webengine->page()->runJavaScript(cmd);
    }

    其中generate_track()为html文件中的函数,只需要一条语句即可实现交互。
    最终效果如图:
    这里写图片描述

    后期加的功能1

    功能:实现小车沿路径运动
    有两种方案:

    • 采用百度地图开源库LuShu实现
    • 采用定时器,定时将小车作为标注显示在路径点上。

    第二种方案适合于路径点很密集,很多的情况,才能看出效果。由于这个项目是采用鼠标选几个位置,因此适合采用第一种方案。

    实现部分:

    • 添加lushu的js文件
    <script type="text/javascript" src="tools/LuShu_min.js"></script>
    • 根据上边保存的路径点数组,实例化一个全局lushu对象,放在generate_track函数里
    lushu=new BMapLib.LuShu(map,track_point,{
                icon:icon1,//图标可以自己添加,也可以默认为百度的红色标注小气球
                speed:3000,
                autoView:false,
                enableRotation:true
            });
    • 最后在需要开始运动的函数里添加下面函数就可以
    lushu.start();

    后期加的功能2

    功能:对已经选择的路径点通过输入经纬度进行修改(生成路径前后均可修改)
    首先在Qt中添加以下代码(前提是在界面中设置好文本框和修改按钮):

    void MainWindow::on_modify_clicked()
    {
        QString number=ui->orderNumber->text();
        QString lng=ui->lngEdit->text();
        QString lat=ui->latEdit->text();
        QString cmd=QString("modifyMarker(\"%1\",\"%2\",\"%3\")").arg(number).arg(lng).arg(lat); //modifyMaker是html文件中的函数
        ui->webengine->page()->runJavaScript(cmd);
    }

    在html文件中添加:

    function modifyMarker(number,lng,lat){
        allMarker=map.getOverlays(); //保存所有标注
        var newpoint=new BMap.Point(lng,lat);
        allMarker[number-1].setPosition(newpoint);
        track_point[number-1]=newpoint;
        if(allMarker[allMarker.length-1].toString()!="[object Marker]"){ //看array中最后一个元素是不是polyline
            map.removeOverlay(polyline);                                 //来判断生成路径之前
            generate_track();                                            //还是生成路径之后修改路径点
        }
    }

    由于没有系统学习过JavaScript,其中if中的判断语句参考了下面图片中的方法,意思就是判断最后一个覆盖物是不是Marker对象。
    这里写图片描述
    getOverlays()后不知道为什么多一个隐藏的标注,所以在选路径点时先清理一次所有的标注,即在选路径点的函数中首先添加:

    map.clearOverlays();
    展开全文
  • 注:本文参考网络教程,瓦片也是通过网络下载。向原作者致敬!原作地址:http://download.csdn.net/download/dkm8873/9233731 原作版本已久,由于代码混淆压缩,无法添加标记等特性。本文通过修改最新的 代码达到...

    注:本文参考网络教程,瓦片也是通过网络下载。向原作者致敬!原作地址:http://download.csdn.net/download/dkm8873/9233731

    原作版本已久,由于代码混淆压缩,无法添加标记等特性。本文通过修改最新的 代码达到离线版的目的,而且功能可以任意扩充。本文每一个步骤都经过试验,万无一失。

     

    点此直接下载完整版Demo代码

    先准备好一个放置源码的文件夹,然后将获取的文件放进去。建立三个文件夹:js、css、images。

    第一步,自然是访问一个入口:http://api.map.baidu.com/api?v=1.3

    里面的内容是这样的(原本没有换行,为了阅读方便一点,加了两个回车):

    (function(){ window.BMap_loadScriptTime = (new Date).getTime(); 
    document.write('<script type="text/javascript" src="  document.write('<link rel="stylesheet" type="text/css" href="http://api.map.baidu.com/res/13/bmap.css"/>');})();

    这一步将获得一个js文件的位置和一个css文件的未知,然后分别下载下来,放在准备好的文件夹里面,我分别存储在/js和/css里面。js的路径后面有若干参数,不管,下载下来的文件重新命名就好,比如叫做apiv1.3.min.js

    接下来要修改这个js中的一点代码了。由于代码是压缩在一行上的,因此修改起来有点麻烦。

    1. 搜索变量:“imgPath”,直到找到一段代码(同样加了一个回车):

    var x=m?"https://sapi.map.baidu.com/":"http://api.map.baidu.com/";
    var cd={imgPath:x+"images/",cityNames:{"\u5317\u4eac":"bj",

    把imgPath:x+"images/"中的x去掉即可,这样就变成了跟网络地址无关的相对位置了。这里指出的images文件夹,是与将来的html文件夹平行的目录里面的。

     

    2. 搜索变量:“_baseUrl”,直到找到这样的一段代码(这个比较简单)

    preLoaded:{},Config:{_baseUrl:x+"getmodules?v=1.3",_timeout:5000},

    同样,要去掉x,这个x也是前面这段代码中的x。同时,不仅要去掉x,更要把地址指向js目录。

    preLoaded:{},Config:{_baseUrl:"js/",_timeout:5000},

    这个地址用来动态加载组件。系统中用到哪些组件,就下载加载哪些组件。最终系统会访问类似于“http://api.map.baidu.com/getmodules?v=1.3&mod=map,oppc,tile,control,marker”的url加载组件。

    下面会看到,我更直接的把加载地址都写死了。看第三步

    继续搜索下一个“_baseUrl”,得到下面的代码:

    window.setTimeout(function(){var cP=cN.Config._baseUrl+"&mod="+cN.Module._arrMdls.join(",");cy.request(cP);cN.Module._arrMdls.length=0;cN.delayFlag=false},1)

    直接修改cP变量吧,写死好了,我就是这样做的:

    var cP=cN.Config._baseUrl+"getmodules.js";cy.request(cP);

    这样,我们把动态加载编程手动加载了。我们访问这个地址“http://api.map.baidu.com/getmodules?v=1.3&mod=map,oppc,tile,control,marker”就可以拿到一个js文件了。把它重命名为上面指定的“getmodules.js”,丢在js文件夹里面即可。

    如果需要更多的功能,也不需要自动加载,反正都是本地的,另外配置参数获取相关的功能就好了。

    3. 关键的一步,也是最复杂的一步:搜索“getTilesUrl”直到找到这样的一段(参照物也可以另选,比如“BMAP_NORMAL_MAP”):

    if(this.map.highResolutionEnabled()){cP="ph"}var cM=j[Math.abs(cR+cO)%j.length]+"?qt=tile&x="+(cR+"").replace(/-/gi,"M")+"&y="+(cO+"").replace(/-/gi,"M")+"&z="+cQ+"&styles="+cP+(a9.browser.ie==6?"&color_dep=32&colors=50":"")+"&udt="+T;return cM.replace(/-(\d+)/gi,"M$1")};window.BMAP_NORMAL_MAP=

    这段代码这么长,我格式化一下来看好了(代码截取比上面更长一些)

        aU.getTilesUrl = function(cN, cQ) {         var cR = cN.x;         var cO = cN.y;         var T = "20150518";         var cP = "pl";         if (this.map.highResolutionEnabled()) {             cP = "ph"         }         var cM = j[Math.abs(cR + cO) % j.length] + "?qt=tile&x="                 + (cR + "").replace(/-/gi, "M") + "&y="                 + (cO + "").replace(/-/gi, "M") + "&z=" + cQ + "&styles=" + cP                 + (a9.browser.ie == 6 ? "&color_dep=32&colors=50" : "")                 + "&udt=" + T;         return cM.replace(/-(\d+)/gi, "M$1")     };     window.BMAP_NORMAL_MAP = new cv("\u5730\u56fe", aU, {         tips : "\u663e\u793a\u666e\u901a\u5730\u56fe"     });

    说一下“getTilesUrl”这个方法,这里就是返回瓦片未知的关键方法。两个参数中,第一个参数是{x,y},第二个参数就是z,这样xyz就都有了。

    来个短路吧,直接把它计算出来的cM的结果重新计算一下,改成:

            //这个地方废弃了上面的计算结果,直接采用本地图片
            cM = "tiles/" + cQ + "/" + cR + "/" + cO + ".jpg";

    这里意味着我们要建立第四个文件夹,tiles了。这个文件夹里面的内容和后面的资源文件请在附件中下载。至于如何下载瓦片,请自行百度吧。

    OK了,这个文件的处理就结束了。

    第二步:下载图片等资源文件。

    这个过程很好办,查找bmap.css里面所有的图片文件,下载下来放在指定的文件夹里面就好了。里面总共不超过两三个文件,下载下来放在images文件夹里面就行了。另外,刚才的这个js里面也有一些资源文件,也下载下来放在images文件夹里面。这个通过搜索imgPath就能找到,有png,有gif,有点文件可能需要通过https的地址才能下载的到。

     

    第三步,写demo.html吧。这个直接贴代码。

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>百度离线版DEMO</title> <script type="text/javascript" src="js/apiv1.3.min.js"></script> <!--script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script--> <link rel="stylesheet" type="text/css" href="css/bmap.css"/> </head> <body> <div style="width:520px;height:340px;border:1px solid gray" id="container"></div> </

    转载于:https://www.cnblogs.com/HXSTX/p/6061621.html

    展开全文
  • 1、由经纬度计算谷歌卫星地图瓦片Tile地址x/y/z Google卫星地图是由256x256大小的jpg图片拼接而成,每块图片的URL格式为“http://kh.google.com/kh?v=3&t=trstrq”样。参数v与图片关系不大,主要是参数t起作用...
  • Qt Location模块中的plugin默认只有 "esri"、...而我目前的需求是加载本地瓦片地图,所以准备实现一个自己的 plugin 。 1.了解如何自定义 plugin 我们可以通过查看 Qt Location 相关文档,了解自定义 plugin 的步...
  • OpenLayers之加载多源数据四:万能瓦片地图加载秘籍

    千次阅读 多人点赞 2018-08-02 13:46:59
    加载简单的瓦片地图 瓦片地图之高德地图 瓦片地图之百度地图 重新定义OpenLayers3的瓦片坐标系 分析瓦片地图坐标系 解密瓦片url 加载微软Bing中文地图 Google地图加载 其实加载瓦片地图基本是大同小异,你...
  • 当使用QML Map显示地图时,有时候无法连接互联网,因此需要使用离线模式加载地图,加载离线地图瓦片时,需要为插件设置参数信息,其中name表示参数字段,value表示传入的值,此时将下载好的瓦片地图路径填入value中...
  • OpenGL实现Google地图瓦片的绘制漫游视频培训课程:此次教程所涉及的内容有OpenGL绘制图片、FreeImage加载图片、墨卡托投影、瓦片的金字塔模型、FramebufferObject、地图的移动和缩放优化,采用屏幕瓦片绘制优化、...
  • 这篇主要说的是Google地图采用的投影方式,瓦片划分方式以及如何从给定的经纬度获取瓦片的数据的网址。所有资料均来自于网络,并亲自试验可行。 Google地图投影 首先是地图投影问题,因为地球本身是一个球体,...
  • 二、WMTS瓦片加载 三、百度瓦片地图  四、腾讯瓦片地图 一、TMS瓦片  先看看TMS瓦片的规则,瓦片坐标系原点(origin)在左下角,X轴从左至右递增,Y轴从下往上递增(先计算左下角,然后计算右上角)。  ...
  • Openlayers3 - 瓦片地图加载解析

    万次阅读 2018-01-24 16:03:51
    瓦片地图加载解析 其实加载瓦片地图基本是大同小异,你可能会觉得很惊讶,因为网上在线的地图服务,看起都不一样,本节即将为你解开这层神秘的面纱。在前面已基本介绍了瓦片地图的解决方案和作用,此处再用一张图来...
  • 某机器人项目中,需要加载构建的地图,此处仅测试直接加载图片的时间。 相关博客 《QT三大绘图类:QPixmap/QImage/QPicture》:https://blog.csdn.net/qq21497936/article/details/79231365 测试代码 ...
  • qt4.8.5使用webkit加载百度离线地图

    千次阅读 2018-11-23 14:01:21
    qt:4.8.5 system:ubuntu12.04 一 百度离线地图API 自己制作百度地图离线JavaScript API 1.首先获取百度 JavaScript API 首先用浏览器打开 http://api.map.baidu.com/api?v=1.3 如下图所示 其中 ...
  • 离线地图的核心其实就是拿到这些瓦片地图文件,并不是离线地图的代码怎么写,其实离线地图的网页代码和在线地图的网页代码几乎一致的,主要就是将对应的依赖的js文件从在线的地址改成本地的地址,然后可能多几个特殊...
  • 0_1_QGIS安装配置中文加载瓦片地图

    千次阅读 2020-04-06 22:15:07
    选择QGIS的原因无他,免费开源而已。... 更多可选择的地图瓦片: 高德矢量地图瓦片: https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=8<ype=11 高德影像地图瓦片: ...
  • 还不知道地图栅格化切片等相关GIS原理的,推荐阅读《webGIS底图栅格化与实时数据合成处理原理,地图API设计,xyz加载》 OGC概念 OGC全称——开放地理空间信息联盟(Open Geospatial Consortium), 它的主要目的就是...
  • QML中加载离线瓦片地图时,就需要将瓦片地图下载到本地,并按照规定的瓦片命名方式进行命名。因此我制作了该瓦片地图下载工具,该工具可选择不同地图类型进行下载。
  • 瓦片地图下载

    2017-02-17 16:08:50
    单个瓦片地图下载没问题,多个循环下载就出现问题,大神帮忙看看原因,多谢
  • OpenGL实现Google地图瓦片的绘制漫游视频培训课程:此次教程所涉及的内容有OpenGL绘制图片、FreeImage加载图片、墨卡托投影、瓦片的金字塔模型、FramebufferObject、地图的移动和缩放优化,采用屏幕瓦片绘制优化、...
  • OpenGL实现Google地图瓦片的绘制漫游视频培训课程:此次教程所涉及的内容有OpenGL绘制图片、FreeImage加载图片、墨卡托投影、瓦片的金字塔模型、FramebufferObject、地图的移动和缩放优化,采用屏幕瓦片绘制优化、...
  • Qt地图交互

    2021-08-22 21:38:10
    利用Qt内的QWebEngineView在控件上执行html,实现在线/离线调用百度地图 利用Qt的QWebChannel实现Qt与JavaScript的交互 准备工作 在线地图实现 根据开发指南,编写基础html文件 <!DOCTYPE html> <...
  • QT 地图的高德地图插件,有街道地图和卫星地图,参考开源代码QGroundControl.

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 280
精华内容 112
关键字:

qt加载地图瓦片