百度地图--离线

1,991 阅读2分钟

下载百度地图API.js

1.下载百度地图api.js

复制红色框内的链接继续跳转

进入页面之后先别着急复制,打开F12,点击红色箭头指示部分,格式代码,复制右边的代码。

2.屏蔽ak验证

找到下列代码,在上面添加一行

if (/^http/.test(a))  return;//修改  屏蔽ak验证,若调用外部资源直接返回
if (b) {
            var c = (1E5 * Math.random()).toFixed(0);
            D._rd["_cbk" + c] = function(a) {
                b && b(a);
                delete D._rd["_cbk" + c]
            }
            ;
            a += "&callback=BMap._rd._cbk" + c
        }

查找可能会出现查找不到的情况,请仔细检查查找内容,个人建议搜索‘(1E5 * Math.random()).toFixed(0)’

3.下载百度地图模块并引用

是的,继续搜索下列内容,值可能发生改变,毕竟百度地图也在更新

这里是所有的模块,用到时自动加载(在线),离线的话要先下载下来放到本地,如 api0.map.bdimg.com/getmodules?…

模块命名格式是map_dbwcej,直接拼接起

var Tb = {
        map: "xu4zwe",
        common: "jhsxen",
        style: "mqdswt",
        tile: "p0pati",
        groundoverlay: "uvl0ac",
        pointcollection: "bbmk0e",
        marker: "gdlnc5",
        symbol: "d3jfwv",
        canvablepath: "c1rjaw",
        vmlcontext: "ljdkuw",
        markeranimation: "zx54lb",
        poly: "lzkyjv",
        draw: "r3rc2t",
        drawbysvg: "td4fpf",
        drawbyvml: "iva1wf",
        drawbycanvas: "ggyzyw",
        infowindow: "3qh3rl",
        oppc: "0ex0xh",
        opmb: "e5bjod",
        menu: "jdidsw",
        control: "bbhj1i",
        navictrl: "jrasgp",
        geoctrl: "pplbbd",
        copyrightctrl: "gdyep0",
        citylistcontrol: "o2n22l",
        scommon: "pprolj",
        local: "3xd2q3",
        route: "r45kkc",
        othersearch: "mbusah",
        mapclick: "02hrhi",
        buslinesearch: "svfucy",
        hotspot: "to3jb0",
        autocomplete: "bgtiqh",
        coordtrans: "pinkk0",
        coordtransutils: "4ynlvp",
        convertor: "hce02e",
        clayer: "qhk3rm",
        pservice: "xvp1p2",
        pcommon: "cmpqr2",
        panorama: "fofrmo",
        panoramaflash: "btooz2"
    };

4.为了方便建议使用主文件

var bmapcfg = {
  'imgext'      : '.jpg',   //瓦片图的后缀  根据需要修改,一般是 .png .jpg
  'tiles_dir'   : '',       //普通瓦片图的地址,为空默认在tiles/ 目录
};
 
var scripts = document.getElementsByTagName("script");
var JS__FILE__ = scripts[scripts.length - 1].getAttribute("src");  //获得当前js文件路径
bmapcfg.home = JS__FILE__.substr(0, JS__FILE__.lastIndexOf("/")+1); //地图API主目录
(function(){
  window.BMap_loadScriptTime = (new Date).getTime();
  //加载地图API主文件
  document.write('<script type="text/javascript" src="'+bmapcfg.home+'bmap_offline_api_v3.0_min.js"></script>');
})();

bmap_offline_api_v3.0_min.js是你下载并修改后的js文件

不要在意命名


5.引用本地资源

修改成第三点下载下来的模块

定位到 url.domain.main_domain_cdn.baidu[0]

我上面是D.url.domain.main_domain_cdn.baidu[0] 但是百度地图经常改名称,所以搜索起来比较烦

D.nd = D.url.proto + ("2" == D.Qt ? D.url.domain.main_domain_nocdn.other : D.url.domain.main_domain_nocdn.baidu) + "/";
    D.oa = D.url.proto + ("2" == D.Qt ? D.url.domain.main_domain_cdn.other[0] : D.url.domain.main_domain_cdn.baidu[0]) + "/";

注释掉并加上

B.ka = bmapcfg.home;  //修改,本地工具资源引用(离线路径),如图:

6.加载本地模块

然后再通过 &mod 进行定位,注释掉其所在行,做如下修改:

7.加载瓦片改为本地离线瓦片

找到高亮部分

现在可以去测试你的项目了

大概的目录就是这样

上述过程只是大概的过程,其中可能会出现一些小字母所代表的意义不一样,需要谨慎,毕竟百度地图版本更新,变量也在更新。

版本不同,不能强融