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

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

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

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

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

(function(){ window.BMap_loadScriptTime = (new Date).getTime();

document.write('

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

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

搜索变量:“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},

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

继续搜索下一个“_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吧。这个直接贴代码。

html>

百度离线版DEMO

java百度地图离线LBS_Web版百度地图加载离线瓦片相关推荐

  1. 百度地图android HD版,百度地图HD版

    应用介绍 在这里你无需担心自己会走丢,因为有它,百度地图HD版是款非常不错的导航地图,快速定位你的位置,探索周边美食娱乐. 不但可以找位置,还能帮你"到那去",公交.驾车.步行三种 ...

  2. 百度地图android HD版,百度地图hd版Android版

    百度地图hd版为用户提供一个专业的生活服务软件,专业智能的导航功能,简单方便的操作方法,以及功能多样的生活服务平台,给用户的生活带来无限的便利. 百度地图hd版特色: [最高清卫星图] 支持手势操作, ...

  3. 安卓学习专栏——百度地图(1)获取SHA1指纹申请百度地图API Key使用百度LBS定位功能(图文保姆级)

    步骤 系列文章 前言 1.前期准备 2.创建应用 3.获取发布版SHA1和开发版SHA1 3.1找到.android文件夹位置 3.2Android Studio的Terminal中cd路径 3.3输 ...

  4. 一行CSS样式去除百度地图版权,去除百度地图右上角平移缩放控件的市县区文字

    /*去除百度地图版权,去除百度地图右上角平移缩放控件的市县区文字*/ .anchorBL, .BMap_zlHolder {display: none;visibility: hidden;}

  5. vue中使用echarts结合百度地图制作地图(引入百度地图、获取百度地图实例、设置百度地图)

    1.初始化echarts以及例子可以看管网的 地址:https://echarts.apache.org/examples/zh/editor.html?c=map-polygon 2说下我遇到的问题 ...

  6. 百度地图集成(一):百度地图简单实现

    百度地图集成概要 百度地图集成(一):百度地图简单实现 百度地图集成(二):百度定位以及反编译地理位置 百度地图集成(三):检索功能的实现 百度地图集成(四):零散 百度地图集成第一篇: 百度地图简单 ...

  7. html5 geolocation 百度地图,html5 geolocation配合百度地图api实现定位

    1.了解html5 geolocation HTML5 Geolocation(地理定位)用于定位用户的位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的.=> 使用 ...

  8. 百度地图API制作类似 百度地图的路线导航界面并实现简单的路线规划功能

    之前我们讲了怎么在百度地图上设置Marker(如A点..) 和弹出框(跟随Marker的,Marker移动的时候也是会跟着移动的),接着又觉得百度地图自带的放大缩小不(fei)是(chang)很(de ...

  9. 如何采用离线的 Google Map API 加载离线谷歌地图的方法

    原文转自:http://www.arceyes.com/bbs/thread-18476-1-1.html 如何采用离线的 Google Map API 加载离线谷歌地图的方法 一.下载示例数据 这里 ...

最新文章

  1. vs2008 常用快捷键
  2. 项目经理如何有效地进行项目沟通?
  3. 【Netty】Netty 核心组件 ( ServerBootstrap | Bootstrap )
  4. java 求交集 算法_Java计算交集,差集,并集的方法示例
  5. 南京工业大学乐学python答案_铁乐学python_day09_作业
  6. 前端Js框架汇总【转】
  7. java+jxls利用excel模版进行导出
  8. matlab 剪裁视频教程,matlab截取一段视频和裁剪一小块视频区域
  9. python编解码的字节与字符串相互转换
  10. 为什么顶级程序员都有超强逆商?顶级程序员马化腾在艰难的时候,是如何度过的?
  11. 【雷达信号处理】---雷达分辨率
  12. PHP查询附近的人及其距离的实现方法
  13. 基础的sql语句练习题+答案
  14. ae表达式修复_AE脚本-AE模板表达式错误修复脚本WINMAC
  15. java 时间戳间隔_JAVA判断两个时间戳,相隔多少分钟
  16. linux C/C++运行时库总结归纳
  17. 如何把jpg图片压缩变小?jpg格式图片压缩方法
  18. LintCode题目:幸运数字8
  19. 国产外星电子核混音视频| 呼叫克苏鲁 - 满血复活 (外星夜店羊肉串核)|混音母带处理 By JeromeAlanChan
  20. 原生JS超级马里奥(第一天)

热门文章

  1. Emlog博客主题模板 ZanBlog3 优化版 V4
  2. Java多态——应用之打印机
  3. Access2003和2007/2010中这样执行SQL语句
  4. 迅雷Bolt的ClipSubBindBitmap函数特别说明
  5. 涂子沛:数据正在引领高清晰社会,重塑文明
  6. matlab实验报告
  7. [国家集训队] 部落战争
  8. S32K144之时钟
  9. 小型便携式计算机怎么拆卸,和手掌一样迷你的电脑!神舟mini PC真机拆解
  10. php(TP5)图片无损压缩上传到七牛云