基于vue实现百度离线地图


1. 百度地图API文件获取

有网络 的情况下,需引入百度地图API文件。如下:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=您的密钥"></script>

无网络 的情况下,需要获取该API文件的离线版本

  • 打开 百度地图示例DEMO[1] 界面,并打开调试模式(F12),选择 Network

  • 点击代码区域右上角的运行,选择 api?v=2.0&ak=.. 的网络请求

  • 找到 src="http://api.map.baidu.com/getscript?v=2.0&ak=E4805d16520de693a3fe707cdc962045&services=&t=20181029172410" 的代码并打开,即可得到 百度地图的API文件 ,复制并保存到本地文件中。命名为 map.js

修改保存到本地的js文件
  • 屏蔽ak验证,搜索 oa(a ,在方法开始处添加红框中内容

  • 修改资源引用路径,搜索 main_domain_nocde,将 z.ma(不同版本名称可能不同) 修改为本地的离线资源路径

  • 修改模块加载路径,搜索 &mod 按如下方式修改(红框中的内容保持一致,不同版本可能不同)

  • 修改地图瓦片获取路径,搜索 qt=vtile 按如下方式修改(相同颜色的框中内容保持一致,后缀跟瓦片后缀保持一致)

获取模块
  • 查看所有模块(该版本共44个模块) 在 map.js 中找到如下内容。即为百度地图所有的模块,可以根据需要下载

  • 查看下载地址,在 百度地图示例->覆盖物示例 可在 Network 中找到 getmodules的请求

  • 可看出,mod参数后面即为查询的模块,多模块间用逗号(,)分隔。模块名为 key_value 然后打开请求即可获取模块JS。模块命名为(key_value.js)。

  • 放在上述配置的目录下即可

获取地图瓦片
  • 使用 全能电子地图下载器 下载所需省份地图,并放在上述配置的目录下
创建map_loader.js
(function() {
window.BMap_loadScriptTime = (new Date).getTime();
window.BMap = window.BMap || {};
window.BMap.apiLoad = function () {
delete window.BMap.apiLoad;
};
let s = document.createElement('script');
s.src = '/static/map/map.js';
document.body.appendChild(s);
})
();
vue中使用
<template>
<div id="bdMap" style="width: 100%; height: 500px;"></div>
</template>
<script>
import '/static/map/map_loader.js'
export default {
mounted () {
this.$nextTick(() => {
this.drawMap()
})
},
methods: {
drawMap () {
let map = new window.BMap.Map('bdMap', {})
map.setCurrentCity('北京')
map.centerAndZoom(new window.BMap.Point(116.404, 39.915), 10)
map.enableScrollWheelZoom()
// 如下两项推荐设置,否则没有对应级别的瓦片会出现空白
map.setMinZoom(8)
map.setMaxZoom(15)
}
}
}
</script>
绘制边界

百度API提供了获取边界点的方法,但是离线无法使用,因此只能先把数据下载下来再使用

  • 找到百度示例中的 添加行政区划 ,然后再示例代码中添加一行 console.log(rs.boundaries[i]) ,然后点击运行

  • 复制 Console 里打印出来的内容到本地json文件中

边界数据json文件格式
{
"boundaries": ["...", "..."]
}
vue中使用边界划分
this.axios.get('http://localhost:8080/hd.json').then((res) => {
let count = res.boundaries.length
let pointArray = []
for (var i = 0; i < count; i++) {
let ply = new window.BMap.Polygon(res.boundaries[i], {
strokeWeight: 2,
strokeOpacity: 1,
strokeStyle: 'solid',
strokeColor: '#ff0000',
fillColor: '#00ffff',
fillOpacity: 0.001
})
map.addOverlay(ply)
pointArray = pointArray.concat(ply.getPath())
}
map.setViewport(pointArray)
})
其他
  • 若需百度地图其他离线插件均可按上述方式进行处理

  • vue中不可直接使用 BMap 而需要使用 window.BMap (之前使用BMap一直报错BMap is not defined)

  • 离线地图目录结构

参考
  1. 百度离线地图JS API V3.0

  1. http://lbsyun.baidu.com/jsdemo.htm#a1_2 ↩︎

基于vue实现百度离线地图的更多相关文章

  1. ionic 修改应用名称 、启动页出现黑白屏 及 修改百度离线地图 点聚合 图标

    1.ionic 修改应用名称 2.启动页打开后会在图片消失会出现一小段黑屏的时间 解决方法: 首先,启动页的图片消失时间默认是在config.xml配置的 <preference name=&q ...

  2. Qt加载百度离线地图

    1.下载百度地图离线API 1.3 下载链接:http://download.csdn.NET/detail/caoshangpa/9476608,网上虽然出现了2.0版本离线API,但是经试用,存在 ...

  3. 基于gmap.net制作离线地图下载器

    网上已有大量文章介绍gamp.net和离线下载相关的文章了.我就不在介绍gmap相关的文章了,这里着重介绍一下下载相关原理.其实gmap.net本身已自带下载工能,只是离线图片下载到sqlit中,现将 ...

  4. 百度离线地图,web

    1.首先获取百度 JavaScript API 首先用浏览器打开 http://api.map.baidu.com/api?v=1.3 其中 http://api.map.baidu.com/gets ...

  5. 百度离线地图API开发V2.0版本

    全面介绍,请看下列介绍地址,改写目前最新版本的百度V2.0地图,已全面实现离线操作,能到达在线功能的95%以上 http://api.jjszd.com:8081/apituiguang/gistg. ...

  6. 推荐几款基于vue的使用插件

    1.muse-ui ★6042 - 三端样式一致的响应式 UI 库 2.vuetify ★11169 - 为移动而生的Vue JS 2组件框架 3.Vux ★12969- 基于Vue和WeUI的组件库 ...

  7. 【BIGEMAP一键离线地图服务】

    地址:http://www.bigemap.com/offlinemaps/ 首页 离线地图 代码示例 项目案例 开发文档 关于我们     [BIGEMAP一键离线服务] 1.快速搭建离线地图服务2 ...

  8. [转]MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite

    MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...

  9. 如何使用android百度地图离线地图

    1.首先把离线地图放在android工程下的assets里面. 注意:建议离线地图下载通过百度地图APIDEMO去下载,因为到官网上下载的离线地图文件格式不一样,APIDEMO的格式是.dat,而官网 ...

随机推荐

  1. Scala 匿名函数

    Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体. 使用匿名函数后,我们的代码变得更简洁了. 下面的表达式就定义了一个接受一个Int类型输入参数的匿名函数: var inc = ...

  2. 时间同步Servname not supported for ai_socktype

    rdate -s 129.7.1.66rdate: 129.7.1.66: Servname not supported for ai_socktype ntpdate 0.centos.pool.n ...

  3. Spring WebSocket入门(一) 转载

    本文转载自:http://www.jianshu.com/p/60799f1356c5 WebSocket是html5带来的一项重大的特性,使得浏览器与服务端之间真正长连接交互成为了可能,这篇文章会带 ...

  4. [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)

    1: 获取PackageManager 获取全部静态已安装的应用: PackageManager pm = getPackageManager(); List<PackageInfo> i ...

  5. javascript常用排序算法实现

    毕业后,由于工作中很少需要自已去写一些排序,所以那些排序算法都忘得差不多了,不过排序是最基础的算法,还是不能落下啦,于是找了一些资料,然后用Javascript实现了一些常用的算法,具体代码如下: & ...

  6. 图灵机器人聊天api

    图灵机器人,功能非常强大,可用于聊天.查询等多个领域 图灵机器人官网:http://www.tuling123.com api地址:http://www.tuling123.com/openapi/a ...

  7. PowerShell中的一个switch的例子

    在这个例子中, 应该注意 Switch语句里对数字范围条件的使用 break的使用 字符串的拼接 数组的声明   ) foreach ($element in $array) { switch($el ...

  8. 关于RECOVERY清除数据的分析

    [前言] 讨论:双清和清空所有数据的问题 说明:以前写的帖子都写三清,那个是为了保险起见才叫大家三项清除,毕竟人都有刚开始的时候,但看了郭贤普的帖子<系统与数据兼容性测试>之后,我觉得有必 ...

  9. scrapy-splash抓取动态数据例子一

    目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无 ...

  10. g++动态库静态库混合链接

    今天编译一个程序时报错: g++ -static -o echo.fcgi echo_adaptor.o echo.o -L/usr/local/lib/ -lfastcgipp -L/usr/lib ...