离线BD瓦片地图加载

目录

1.概述

2.加载

3.加载代码


1.概述

        本实例演示如何加载离线地图瓦片。包含三个文件/文件夹。分别是:bmap_offline、china_1和map.html。双击map.html即可在浏览器看到加载效果。

        bmap_offline存放各种js和css,china_1存放离线瓦片资源,这里根据实际情况,是什么就是什么,命名随意,需要和map.html内的名称对应。运行效果如下:

        这里截取了部分运行效果,全图在手机上老是提示违规,不知道这样截图算不算违规。

2.加载

        bmap_offline就不详细说了,直接使用就行,也可以根据自己的需要改样式。目录结构如下:

        china_1这个文件夹,在示例中存储了1-9级全国离线瓦片资源,目录结构如下:

        每一级里存放的都是256×256的离线瓦片地图。比如:

        这个目录里的资源就是离线瓦片,根据实际情况获取到资源后,放在这里,起个名字,和map.html内对应即可,用文本编辑工具打开map.html,可进行修改,修改后保存,双击即可在浏览器内查看。

bmapcfg.tiles_dir = "china_1";//主地图

var other_layer = [''];//副地图

3.加载代码

<!doctype html>

<html>

<head>

    <title></title>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <meta http-equiv="Pragma" content="no-cache" />

    <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />

    <meta http-equiv="Expires" content="0" />

    <style>

        #allmap{width:100%;height:700px;}

.anchorBL > a { display: none; }

.BMap_cpyCtrl { display: none; }

    </style>

</head>

<body style="margin:0;padding:0">

    <div id="allmap"></div>

    <script src="bmap_offline/jquery_1.9.js"></script>

    <script src="bmap_offline/map_load.js"></script>

    <script>

        $(function () {

            $("#allmap").height($(window).height() - 1);

            bmapcfg.tiles_dir = "china_1";//主地图

            var other_layer = [''];//副地图

            var map = new BMap.Map("allmap", { minZoom: 1, maxZoom: 19 });

            map.centerAndZoom(new BMap.Point("107.027397", "33.619973"), 5);//初始地图中心点和级别

            map.enableScrollWheelZoom(true);

            map.enableKeyboard();

            var blc_opts = { anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: new BMap.Size(110, 5) }

            var ctl_blc = new BMap.ScaleControl(blc_opts);

            map.addControl(ctl_blc);

            var navigation_opts =

            {

                anchor: BMAP_ANCHOR_TOP_LEFT,

                offset: new BMap.Size(10, 10),

                type: BMAP_NAVIGATION_CONTROL_ZOOM

            }

            var ctl_navigation = new BMap.NavigationControl(navigation_opts);

            map.addControl(ctl_navigation);

            var overview_opts =

            {

                isOpen: true,

                anchor: BMAP_ANCHOR_BOTTOM_RIGHT,

                offset: new BMap.Size(0, 0),

                size: new BMap.Size(100, 100)

            }

            var ctl_overview = new BMap.OverviewMapControl(overview_opts);

            map.addControl(ctl_overview);



            function ZoomLvControl() {

                this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;

                this.defaultOffset = new BMap.Size(10, 55)

            }

            ZoomLvControl.prototype = new BMap.Control();

            ZoomLvControl.prototype.initialize = function (map) {

                var div = document.createElement('div');

                div.setAttribute("class", "map_lv");

                div.appendChild(document.createTextNode(map.getZoom()));

                map.getContainer().appendChild(div);

                return div;

            }

            map.addControl(new ZoomLvControl());


            function PointControl() {

                this.defaultAnchor = BMAP_ANCHOR_BOTTOM_LEFT;

                this.defaultOffset = new BMap.Size(10,5);

            }

            PointControl.prototype = new BMap.Control();

            PointControl.prototype.initialize = function (map) {

                var div = document.createElement('div');

                div.setAttribute("class", "map_mousepoint");

                map.getContainer().appendChild(div);

                return div;

            }

            map.addControl(new PointControl());

            map.addEventListener("zoomend", function (e) {

                $(".map_lv").html(map.getZoom())

            })

            map.addEventListener("mousemove", function (e) {

                $(".map_mousepoint").html("当前鼠标坐标位置:" + e.point.lng + "," + e.point.lat);

            })



            $.each(other_layer, function (index, name) {

                var tileLayer = new BMap.TileLayer({ isTransparentPng: true });

                tileLayer.getTilesUrl = function (tileCoord, zoom) {

                    return name + '/' + zoom + '/' + (tileCoord.x + "").replace(/-/gi, "M") + '/' + (tileCoord.y + "").replace(/-/gi, "M") + '.png';

                }

                map.addTileLayer(tileLayer);

            })

        })

    </script>

</body>

</html>

全国范围离线瓦片资源1-12级可从这里下载:

https://download.csdn.net/download/ak2111/89064881?spm=1001.2014.3001.5501

  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将地图控件加载到QAxWidget,需要执行以下几个步骤: 1. 首先,确保已经安装了相应的地图控件,例如高德地图、百度地图等。这些地图控件通常是以ActiveX插件的形式提供的。 2. 在Qt的项目中引入QAxWidget类,该类用于显示和操作ActiveX控件。可以通过在项目文件(.pro)中添加“QT += axcontainer”来引入QAxWidget类。 3. 在Qt代码中创建一个QAxWidget实例,并设置控件类ID。控件类ID是地图控件的唯一标识符,可以从地图控件的官方文档或开发者手册中获取。 例如,如果要加载高德地图控件,可以使用以下代码: ```cpp QAxWidget *mapWidget = new QAxWidget(this); mapWidget->setControl("{E6C9ACDB-7D23-4E71-BD9A-C9FBD73F6A11}"); ``` 4. 将QAxWidget添加到布局中或直接设置其大小和位置,以便在界面上显示地图控件。 例如,如果要将地图控件添加到一个QVBoxLayout中,可以使用以下代码: ```cpp QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(mapWidget); setLayout(layout); ``` 5. 配置和调整地图控件的属性和行为,如设置地图的中心点、缩放级别、标记点等。可以通过调用QAxWidget的dynamicCall方法来调用地图控件的相关方法和属性。 例如,如果要设置地图的中心点和缩放级别,可以使用以下代码: ```cpp mapWidget->dynamicCall("SetCenter(double,double)", 116.397428, 39.90923); mapWidget->dynamicCall("SetZoomLevel(int)", 10); ``` 通过上述步骤,我们就可以将地图控件加载到QAxWidget中,并在Qt应用程序中显示和操作地图。当然,具体的加载过程还取决于地图控件的具体实现和使用方式,可以根据具体的地图控件文档进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ak2111

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

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

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

打赏作者

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

抵扣说明:

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

余额充值