web百度离线地图开发(详细教程)2019

需求情景

项目在内网上使用,不得连接外网,所以需要开发离线地图功能
这个项目是vue+vue-cli的,需要对vue和这种项目结构有些了解
这是自己写的vue项目构建的文章,很详细,不了解的可以看看:
https://blog.csdn.net/PGguoqi/article/details/88977403

主要参考

我这里算是对这次开发做个总结,主要参考了下面两篇文章,但是因为或多或少都不是很详细,中间卡了好久,最后捣鼓出来了,所以写个文章记录分享下,照着一步一步走,绝对能开发出来。
https://blog.csdn.net/wml00000/article/details/82219015
https://blog.csdn.net/a312024054/article/details/70213444
如有谬误,还望指正。希望对大家有所帮助

开发步骤

一、JS API文件下载

访问这个地址 http://api.map.baidu.com/api?v=3.0 ,打开之后是一段代码:
这个是引入在线js文件时的地址在代码中找到 src="http://api.map.baidu.com/getscript?v=3.0&ak=&services=&t=20180823175819",打开这个链接,就可以看到压缩后的js代码,这个是我们要用到的代码:
在这里插入图片描述
在站长工具 http://tool.chinaz.com/tools/jsformat.aspx 将上面的压缩代码格式化备用,以便下面查看与修改。
static/js目录下新建个js文件,我这里命名为 bmap_offline_api_min.js ,将上面格式化后的js代码复制到这个文件中:
在这里插入图片描述
最后,需要在入口index.html的head中引入这个js:
在这里插入图片描述

二、修改API文件

1、屏蔽ak验证

bmap_offline_api_min.js 文件中,用 Math.random() 多找几次,定位到下列代码位置:
(以下代码方法名称和一些变量名称可能会有出入,我下载的代码就和网上一些贴子上看到的代码不尽相同)

function oa(a, b) {
   
    if (b) {
   
        var c = (1E5 * Math.random()).toFixed(0);
        z._rd["_cbk" + c] = function(a) {
   
            b && b(a);
            delete z._rd["_cbk" + c]
        };
        a += "&callback=BMap._rd._cbk" + c
    }
    var d = K("script", {
   
        type: "text/javascript"
    });
    d.charset = "utf-8";
    d.src = a;
    d.addEventListener ? d.addEventListener("load",
        function(a) {
   
            a = a.target;
            a.parentNode.removeChild(a)
        },
        q) : d.attachEvent && d.attachEvent("onreadystatechange",
        function() {
   
            var a = window.event.srcElement;
            a && ("loaded" == a.readyState || "complete" == a.readyState) && a.parentNode.removeChild(a)
        });
    setTimeout(function() {
   
            document.getElementsByTagName("head")[0].appendChild(d);
            d = p
        },
        1)
};

然后修改上面的代码,对http拦截,不进行外部访问,只需在最开始加一行代码if (/^http/.test(a)) return;

function oa(a, b) {
   
	//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    if (/^http/.test(a)) return; // !!!!!这里加判断,如果是调用外部资源就退出去
    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    if (b) {
   
        var c = (1E5 * Math.random()).toFixed(0);
        z._rd["_cbk" + c] = function(a) {
   
            b && b(a);
            delete z._rd["_cbk" + c]
        };
        a += "&callback=BMap._rd._cbk" + c
    }
    var d = K("script", {
   
        type: "text/javascript"
    });
    d.charset = "utf-8";
    d.src = a;
    d.addEventListener ? d.addEventListener("load",
        function(a) {
   
            a = a.target;
            a.parentNode.removeChild(a)
        },
        q) : d.attachEvent && d.attachEvent("onreadystat
  • 27
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
您可以按照以下步骤使用百度离线地图进行开发: 1. 下载百度地图SDK:访问百度地图开放平台官网,下载适用于您的开发平台的百度地图SDK。百度地图SDK提供了多种开发语言和平台的版本,如Android、iOS、Web等。 2. 注册百度开放平台账号:在使用百度地图SDK之前,您需要注册一个百度开放平台账号,并创建一个应用。 3. 获取API密钥:在创建应用后,您将获得一个API密钥,该密钥用于在应用中使用百度地图API。 4. 集成SDK:将下载的百度地图SDK集成到您的开发环境中。根据您选择的开发平台和语言,按照相应的文档进行集成。 5. 初始化地图:在您的应用中,使用获得的API密钥初始化地图。具体的初始化方式会因开发平台和语言而有所不同,可以参考百度地图SDK的文档。 6. 加载离线地图数据:使用百度地图SDK提供的接口,加载离线地图数据。离线地图数据需要事先下载到设备中,可以通过百度地图官网或者SDK提供的下载接口获取离线地图数据。 7. 使用地图功能:通过百度地图SDK提供的接口,实现地图功能,如地图展示、标注、路径规划等。根据您的需求,使用合适的接口进行相关操作。 注意事项: - 在使用百度地图API时,请遵守百度地图开放平台的相关规定。 - 确保您的应用在使用百度地图API时具备网络连接,以便获取地图数据和服务。 - 根据需要,可以在离线地图数据中预加载特定区域的地图数据,以提高离线地图的使用体验。 以上是使用百度离线地图进行开发的基本步骤,希望对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值