基于vue实现百度离线地图

基于vue实现百度离线地图


1. 百度地图API文件获取

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

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

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

  • 打开 百度地图示例DEMO1 界面,并打开调试模式(F12),选择 Network
    1140292-20181123152237396-573503493.png

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

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

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

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

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

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

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

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

  • 可看出,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]) ,然后点击运行
    1140292-20181123152512611-999503963.png

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

边界数据json文件格式
{"boundaries": ["...", "..."]
}
vue中使用边界划分
this.axios.get('http://localhost:8080/hd.json').then((res) => {let count = res.boundaries.lengthlet 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)

  • 离线地图目录结构
    1140292-20181123152536585-787978358.png

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

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

转载于:https://www.cnblogs.com/jinjiyese153/p/10007819.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日期插件rolldate.js的使用

日期插件rolldate.js的使用 下载地址&#xff1a;http://www.jq22.com/jquery-info19834 效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" …

MapReduce算法–了解数据连接第二部分

自从我上一次发布以来已经有一段时间了&#xff0c;就像我上一次大休息一样&#xff0c;我正在Coursera上一些课程。 这次是Scala中的函数式编程 原理和反应式编程原理 。 我发现它们都是不错的课程&#xff0c;如果有时间的话&#xff0c;建议您选一门。 在本文中&#xff0c;…

C: City----逆向并查集

C: City 时间限制: 1 s 内存限制: 128 MB 题目描述 如果城市A和城市B互通&#xff0c;城市B和城市C互通&#xff0c;那么城市A和城市C也互通&#xff0c;A、B、C三个城市算一个聚集点。先已知有n个城市和m条道路&#xff0c;想求的是有几个聚集点&#xff1f;但小S觉…

java menu字体_Java开发网 - 请问如何让菜单字体变宋体?

Posted by:scottdingPosted on:2003-01-23 12:44贴出了大部分&#xff0c;你看看想改什么吧。Font font new Font("宋体",Font.PLAIN,14);UIManager.put("Button.font",font);UIManager.put("ToggleButton.font",font);UIManager.put("Rad…

Java8中 Parallel Streams 的陷阱 [译]

转载自https://www.cnblogs.com/imyijie/p/4478074.html Java8 提供了三个我们渴望的重要的功能:Lambdas 、 Stream API、以及接口的默认方法。不过我们很容易滥用它们甚至破坏自己的代码。 今天我们来看看Stream api&#xff0c;尤其是 parallel streams。这篇文章概述了其中的…

自定义消息提示框

使用原生JavaScript简单封装的一个消息提示模态框&#xff0c;如果谁有更好的方式可以分享&#xff0c;谢谢&#xff01; <!DOCTYPE html> <html lang"en"><head><title></title><meta charset"UTF-8"><meta name&…

ObjectStreamClass:监视Java对象的序列化

ObjectStreamClass可以是有用的类&#xff0c;用于分析JVM中加载的序列化类的序列化特征。 这篇文章介绍了此类提供的有关已加载序列化类的一些信息。 ObjectStreamClass提供了两个用于查找类的静态方法&#xff1a; lookup&#xff08;class&#xff09;和lookupAny&#xff…

@Transcational特性

捕获RuntimeException捕获Error并不捕获Checked Exception在方法中使用Transcational注解时候&#xff0c;通过throw new Exception&#xff08;&#xff09;&#xff0c;在发生异常的时候不会进行回滚&#xff0c;可以使用throw new RuntimeException&#xff08;&#xff09;…

SpringBoot集成Thymeleaf前端模版

1、在application.properties配置文件中添加 thymeleaf 的配置信息 spring.datasource.driverClassNamecom.mysql.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/test spring.datasource.usernameroot spring.datasource.passwordrootspring.thymeleaf.modeHT…

00005在java结果输出_Java-005-运算符详解

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言Java也提供了套丰富的运算符来操纵变量, 可以把运算符分成以下几组算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符。①算术运算符用在数学表达式中它们的作用和在数学中的作用一样 表格中的…

spring data jpa 分页查询

法一&#xff08;本地sql查询,注意表名啥的都用数据库中的名称&#xff0c;适用于特定数据库的查询&#xff09; public interface UserRepository extends JpaRepository<User, Long> {Query(value "SELECT * FROM USERS WHERE LASTNAME ?1",countQuery &…

Python之递归

递归的意思是函数自己调用自己。递归次数&#xff1a;递归如果是死循环&#xff0c;最多执行999次。count0 def say():global countcount1print(say)print(count)say()say() #结果&#xff1a; # say # 1 # ... # say # 997 # say # RecursionError: maximum recursion depth e…

使用CDI的InjectionPoint注入配置值

依赖注入是用于组织类依赖的一项出色技术。 当前类中需要的所有类实例都是在运行时从DI容器提供的。 但是您的配置呢&#xff1f; 当然&#xff0c;您可以创建一个“ Configuration”类&#xff0c;并在需要它的任何地方注入该类&#xff0c;并从中获取必要的值。 但是CDI允许…

LOJ.6435.[PKUSC2018]星际穿越(倍增)

LOJBZOJ 参考这儿qwq。 首先询问都是求&#xff0c;向左走的最短路。\(f[i][j]\)表示从\(i\)走到\(j\)最少需要多少步。表示这样只会\(O(n^2\log n)\)的 但是感觉能卡过\(70\)分。 注意到从\(i\)出发&#xff0c;走\(j\)步能到达的点都是一段一段的。所以不妨令\(f[i][j]\)表示…

java setsession_Java Session.setServerAliveInterval方法代码示例

import com.jcraft.jsch.Session; //导入方法依赖的package包/类private Session startNewSession(boolean acquireChannel) throws JSchException, InterruptedException {Session newSession null;final AtomicBoolean cancelled new AtomicBoolean(false);ConnectingProgr…

鼠标拖动改变DIV等网页元素的大小的最佳实践

1.初次实现 1.1 html代码 <html xmlns"http://www.w3.org/1999/xhtml" xml:lang"en" lang"en"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>div change wid…

[WC2006]水管局长

水管局长 题目链接&#xff1a;https://www.luogu.org/problemnew/show/P4172#sub LCT 显然两个点的路径上的边最大要最小在该图最小生成树上 正删倒加&#xff0c;倒着做变成加边操作 加边时判断一下是否能形成更优的生成树&#xff0c;用LCT删除和连接操作即可 1 #include<…

JDBC 4.0鲜为人知的Clob.free()和Blob.free()方法

在会议上谈论jOOQ时&#xff0c;我总是展示此幻灯片&#xff0c;其中包含许多人们经常犯的非常常见的JDBC错误&#xff1a; 此图中的六个常见的JDBC错误 您可以找到错误吗&#xff1f; 其中一些是显而易见的&#xff0c;例如&#xff1a; 第4行&#xff1a;由于第3行的连接…

反沙箱——SetErrorMode

目录 1.前言 2.原理讲解 3.代码实现 4.参考 1.前言 利用SetErrorMode进行反沙箱的技术&#xff0c;在2010年就有被提出&#xff0c;但是之前搜了很久都没有相关内容&#xff0c;这里简单的说一下这个反沙箱的实现。反沙箱参考GandCrab5.2。 2.原理讲解 首先讲一下SetErrorMode这…

bat java 启动脚本_从bat脚本运行的Java应用程序上的Windows关闭挂钩

小编典典在极少数情况下&#xff0c;虚拟机可能会中止&#xff0c;即在不完全关闭的情况下停止运行。当虚拟机在外部终止时会发生这种情况&#xff0c;例如在Unix上使用SIGKILL信号或在MicrosoftWindows上使用TerminateProcess调用。因此&#xff0c;不幸的是&#xff0c;我认为…