注:如有侵权行为,请联系我删除。

注:如需转载请联系本人,并注明出处。

注:工具下载链接已更新  时间:20201109

目录

前言

工具

切片方法

离线地图瓦片下载

离线瓦片和叠加层结合

结语

前言

万恶的百度,只要你所有一下百度离线地图,就会出现一堆有用没用,似曾相识的网站和博客,直接让你摸不着头脑。虽然csdn上已经有了很多类似该标题的博客来写瓦片的切片过程,但是我觉得很多都只讲了其一,要是想通过一个博客就把整个叠加层做下来很难。

工具

工具已过期,网上自行寻找

PS:百度自行下载一个PS工具,用来对需要叠加的图片进行旋转,放大缩小

以上工具都是大神们在GitHub上开源的项目,有兴趣可以去搜一下

接下来我结合我自己的需求来说一下具体的切片方法

1、缩放地图到任意级别直至你可以在一张瓦片或者4张/9张瓦片上面看清楚你要叠加的地图,然后将这几块瓦片截图保存

由于我需要的区域比较大,这里在13级别的时候能完整的展示,所以就截取了4张瓦片,存为13-4.png

2、在ps中新建一个2048*2048像素的背景透明图层,然后将13-4.png放到该图层上,由于一张瓦片大小是256*256像素,所以放进去之后会发现13-4.png很小,选择13-4.png然后按下shift-T可以自由变换,按住shift等比例放大13-4.png直至填充满整个图层。按回车保存

------>

3、新建一个图层,将叠层图片13-4-over.png缩放、旋转直至与目标区域完全重合。

4、记录下当前位置的13-4-over.png,然后可以使用套索工具和魔棒把13-4-over.png中不需要的、多余的部分内容删掉,为了美观只保留需要的部分。

---->

5、将修改好的13-4-over.png存储为web所用格式名称为13-4-over-web.png,这样可以使得该图层的周围部分从白色变成透明

6、开始切片

切片有两个关键点: 1、叠加层图片的中心位置  2、叠加层图片的像素大小

7、把13-4-over-web.png图片拖拽到ps中,就可以找到图片的中心点,当然也可以用标尺工具找到图片的中心点,注意这里是整张图层的中心,不要忽略透明部分。 打开  拾取坐标系统 在地图上找到该中心点的坐标经纬度。

8、打开切片工具,

8.1 选择叠加层图片: 13-4-over-web.png

8.2 选择输出路径: C:\Users\Administrator\Desktop\图层测试\test1

8.3 选择输出类型 :图片以及代码

8.4 坐标设置  :把刚才选择的经纬度填入

8.5 级别设置 :  自定义,这里要提示两点,

1、原图所在级别表示叠加层图片13-4-over-web.png在当前层级既不放大也不缩小,这也就说明18级以上它会放大,以下它会缩小,具体怎么缩放不需要管,只要在原图所在级别的的图片对准了,那其他级别基本准确。

2、如果想让叠加层图片的清晰度越高,就需要分辨了越高的图片,因此原图所在级别就也需要更高。

8.6 图层设置:做为图层

8.7 确认信息不误后开始切面,然后就可以去泡杯茶回来看结果了;

9、打开test1文件夹下面的index.html网页,查看叠加层的位置

显然我的叠加层小了,而且小了很多,出现这种情况的原因有:

叠加层在地图上太小 方法
叠加层图片的像素太小 更改图片大小
原图所在级别在高 更改8.5中原图所在级别为更低
叠加层在地图上太大 方法
叠加层图片的像素太小 更改图片大小
原图所在级别在低 更改8.5中原图所在级别为更高

10、现在我们完善一下怎么让图片叠加更加准确

10.1 首先查看13.4-over.png的分辨率

10.2 根据你要缩放的层级设置新建图层的像素大小,长宽公式为:256*2^(最大级别-最小级别),但是我觉得这个也不是死标准,具体还得看你需要覆盖的叠加层图片的像素大小。要是叠加层图片像素大于理论图片大小,将理论图片大小再放大多倍。

10.3 将10.2中13.4-over.png图片进行旋转缩放,并找到中心位置后保存。

10.4 这里最好先将13.4-over.png(叠加层原图)的多余部分、空白区域删除后再进行缩放操作。

10.5 重复 6-9 步,可以先确定中心位置的经纬度坐标,然后确定原图所在的级别,最后确定图片的分辨率,在确定的分辨率下对13.4-over.png图片进行缩放。

像我的叠加层原图大小是7466*5812,我就设置新建的图层大小为8192*8192来保存我的叠加层图片,但是我发现依旧不够大,所以我又用了10240*10240的图层来存放我的原图

---->----->

这个效果就出来了。

虽然看起来挺流畅,实际制作过程也需要进行多次实验才能达到准确的效果


================================================end1===================================================

接下来说一下离线地图瓦片下载

1、打开百度地图瓦片下载——无水印工具

2、输入百度地图的ak,没有的可以去百度地图官网申请一个密钥,

3.选择需要的区域进行下载,有两种下载方式    1:可视区域2:行政区域

4、点击下载瓦片后会弹出一个窗口,选择要下载的瓦片级别,要是电脑性能比较好的,可以修改线程数,层级越大,下载需要的时间就越多,这里具体可以百度一下该瓦片工具的使用方法。

5、下载完成之后就可以开始使用了。

========================================================end2===========================================

接下来就是把离线瓦片和叠加层结合

1、将叠加层文件夹放到离线地图文件夹下,命名为14-19-over

2.修改demo.html为

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>百度离线版2.0 DEMO</title><script type="text/javascript" src="js/apiv2.0.min.js"></script><link rel="stylesheet" type="text/css" href="css/bmap.css"/><!-- 添加一个meta标签, 使页面更好的在移动平台上展示 --><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><!-- 解决中文乱码问题 --><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><!-- 设置样式, 使地图充满整个浏览器窗口 --><style type="text/css">html{height:100%}body{height:100%;margin:0px;padding:0px}#container{height:100%}</style></head><body><!-- 创建地图容器元素 地图需要一个HTML元素作为容器,这样才能展现到页面上。这里我们创建了一个div元素 --><div id="container"></div></body>
</html><script type="text/javascript">var map = new BMap.Map("container");    //创建地图实例var point = new BMap.Point(117.42625,38.843485);    // 创建点坐标map.centerAndZoom(point, 13);                     // 初始化地图,设置中心点坐标和地图级别。//map.addControl(new BMap.MapTypeControl());map.addControl(new BMap.NavigationControl());map.enableScrollWheelZoom();                  // 启用滚轮放大缩小。map.enableKeyboard();                         // 启用键盘操作。  map.setCurrentCity("天津");          // 设置地图显示的城市 此项是必须设置的map.enableScrollWheelZoom();                 //启用滚轮放大缩小var tileLayer = new BMap.TileLayer({isTransparentPng: true});tileLayer.getTilesUrl = function(tileCoord, zoom) {var x = tileCoord.x;var y = tileCoord.y;return "http://lbsyun.baidu.com/jsdemo/img/border.png";}tileLayer.getTilesUrl = function(tileCoord, zoom) {var x = tileCoord.x;var y = tileCoord.y;return '14-19-over/'+'tiles/' + zoom + '/tile-' + x + '_' + y + '.png';}
map.addTileLayer(tileLayer);var marker = new BMap.Marker(point);map.addOverlay(marker); </script>

3、保存后打开demo.html

=================================================end===================================================

结语

以上就是我在制作百度离线地图和叠加层的时候所总结的一些工具和方法,希望能帮上正在做离线地图的小伙伴,如有不正确的地方,还请大家指正,如有更好的方法,也欢迎大家给我留言。

百度离线地图下载和叠加层瓦片切割(工具下载链接已更新)相关推荐

  1. 百度离线地图示例之三:矢量图

    前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...

  2. QT实现加载百度离线地图

    在Qt中加载百度地图需要用到网络浏览器,在此采用webEngine模块,然后用webchannel进行qt与HTML/JavaScript的交互. 需求描述:软件加载百度地图,用鼠标在地图上选点,并进 ...

  3. 百度离线地图开发,node实现地图瓦片下载

    最近有个Web项目要用离线地图,项目是在内网环境,找了很多资料,踩了很多坑,好在已经实现了,下面把资料整理一下. 首先是百度离线地图开发包,原文地址是http://www.xiaoguo123.com ...

  4. 百度离线地图 —— 瓦片地图下载

    百度离线地图使用 下载工具,工具在文末. 解压,打开文件夹,找到 BaiDuMapTile.exe 应用程序,双击打开,下载瓦片地图. 下载完之后,有一个maptile文件夹,就是所需区域的瓦片地图 ...

  5. 百度离线地图示例之四:热力图

    前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...

  6. 百度离线地图示例之二:测距

    前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...

  7. 百度离线地图示例之十三:动态运行轨迹实现(附源码)

    前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...

  8. 百度离线地图示例之十二:混合图(街道图、卫星图)实现路径及打点

    前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末 ...

  9. 百度离线地图示例之十一:混合图(街道图、卫星图)实现

    前言介绍: 主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),实现 ...

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

    web百度离线地图开发(详细教程) 需求情景 主要参考 开发步骤 一.JS API文件下载 二.修改API文件 1.屏蔽ak验证 2.设置引用本地资源路径 3.下载本地资源 4.引用本地资源 三.加载 ...

最新文章

  1. zend studio 8安装与汉化
  2. 一条sql导致数据库整体性能下降的诊断和解决的全过程
  3. 查询数据,插入临时表
  4. Visual Studio 2010或者2012上安装VASSISTX
  5. 补充spring事务传播性没有考虑的几种情况
  6. svg大小自适应_网格自适应的 2 种方法——实现更高效的计算
  7. STM32F103:一.(4)JWAG功能IO复用
  8. ISE使用中RAM IP核配置及ram测试(两种测试)
  9. 最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)
  10. matlab多重比较lsd法,多重比较LSD-t值的计算(附证明方法)
  11. FeedDemon 实务讲义
  12. win10自动更新后打开系统应用提示文件系统错误(-2147219196)
  13. 线性代数学习笔记——第十八讲——抽象矩阵的可逆性
  14. Kubernetes 与 OpenShift 的关系
  15. 【LOJ#10115,tyvj1473】校门外的树(第3次升级)
  16. 【OpenCV】01-OpenCV的数据类型
  17. 描述计算机主机,上海交大计算机第一次作业
  18. 小酌重构系列[3]——方法、字段的提升和降低
  19. Android平台蓝牙相关名词缩写
  20. 单片机读写FT24C256A详解

热门文章

  1. 三星 9810 android 9,【极光ROM】-【三星NOTE9 N960X-9810】-【V19.0 Android-Q-TF5-OneUI2.1】...
  2. [现代控制理论]8_LQR控制器_simulink
  3. nginx 源码安装
  4. Skyline软件二次开发初级——3如何在WEB页面中的三维地图上创建几何对象
  5. 单片机:LCD1602
  6. 得力计算机无法开机,得力针式打印机常见问题及解决方法
  7. 获取CPU、硬盘、主板序列号及MAC地址工具类
  8. 使用Wireshark抓包分析TCP协议
  9. Pascal voc 数据集下载网址
  10. SCAN及相关SSCAN,HSCAN和ZSCAN命令解析