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

article/2025/9/18 15:25:07

前言介绍:

主要是基于v3.0的API版本进行的离线,纯内网可操作,基本上实现了现有90%以上的功能点,能兼容jpg和png格式的瓦片图层,实现了原生和基于Vue两个版本(包含常用的55个示例),文末有个人微信二维码,有不完善的地方,可加微信一起探讨交流,实现的功能点概要如下:

地图示例:

地图展示
同时加载两个地图
设置地图最大及最
小级别移动地图
缩放地图
拖拽地图
设置地图显示范围
获取地图显示范围
测距

地图控件:

工具条、比例尺控件 地图类型
缩略图控件
添加版权控件
添加自定义控件

覆盖物示例:

添加/删除覆盖物
折线上添加方向箭头
添加动画标注点
设置点的新图标
设置点是否可拖拽 设置线、面可编辑
设置覆盖物的显示与隐藏
文本标注
带文字标签的覆盖物
获取覆盖物的信息
添加多个标注点
从多个点删除指定点
加载闪烁点
加载海量点 添加弧线
画椭圆
添加自定义覆盖物
点聚合
添加/删除地面叠加层
热力图功能示例
矢量图
添加自定义控件

信息窗口示例:

纯文本的信息窗口
添加复杂内容的信息窗口
给多个点添加信息窗口
获取信息窗口的信息

右键菜单示例:

给地图添加右键菜单
给覆盖物添加右键菜单

鼠标操作示例

设置地图默认的鼠标样式
鼠标滚轮缩放地图
鼠标拖拽地图
鼠标测距
单击获取点击的经纬度
鼠标绘制工具

添加层示例:

添加清华校园微观图
自定义网格

事件示例

图块加载完毕
地图单击事件
给覆盖物注册事件
传递事件参数
为多个点注册单击事件
注销事件

除了离线了官方API外,还对一些操作工具类进行了离线(总计11个工具),比如:

Heatmap

作用:热力图

SearchInfoWindow

作用:百度地图样式”的信息窗口工具。该工具为用户提供带搜索框的信息窗口,该窗口内容可自由定制多种风格。同时,用户可以将信息窗口标题以短信方式发送到手机上。

MarkerClusterer

作用:多标注聚合器。此工具解决加载大量点要素到地图上造成缓慢,且产生覆盖现象的问题。

RectangleZoom

作用:区域缩放工具。此工具将根据用户拖拽绘制的矩形区域大小对地图进行放大或缩小操作。

TextIconOverlay

作用:自定义覆盖物工具。用户可以使用该工具在地图上添加文字和图标样式的覆盖物。

LuShu

作用:路书,轨迹运动工具。此工具用以实现marker沿路线运动,并有暂停等功能。

GeoUtils

作用:几何运算工具。此工具提供判断点与矩形、 圆形、多边形线、多边形面的关系,并提供计算折线长度和多边形的面积的公式。

DistanceTool

作用:测距。

DrawingManager

作用:矢量图绘制。

代码示例实现:

1、百度地图离线API下载地址
2、百度地图离线工具类集合下载地址

html引用示例代码如下:

可以看出全部是离线引用,当然哪些工具类可以在组件内用的时候再引用也可以

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1.0"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><title>百度离线地图</title><!-- 百度地图3.0 API Begin --><script src="static/offlineMapLib/js/jquery-3.3.1.min.js"></script><script type="text/javascript" src="static/offlineMapLib/map3.0_init.js"></script><script type="text/javascript" src="static/offlineMapLib/map3.0.js"></script><script type="text/javascript" src="static/offlineMapLib/layer.js"></script><script type="text/javascript" src="static/offlineMapLib/demo.js"></script><!-- 热力图 --><script type="text/javascript" src="static/offlineMapLib/library/Heatmap_min.js"></script><!-- 画弧线 --><script type="text/javascript" src="static/offlineMapLib/library/CurveLine.min.js"></script><!-- 点聚合 --><script type="text/javascript" src="static/offlineMapLib/library/TextIconOverlay_min.js"></script><script type="text/javascript" src="static/offlineMapLib/library/MarkerClusterer_min.js"></script><!-- 测距 --><script type="text/javascript" src="static/offlineMapLib/library/DistanceTool_min.js"></script><!-- 鼠标绘制 --><link rel="stylesheet" href="static/offlineMapLib/library/DrawingManager_min.css" /><script type="text/javascript" src="static/offlineMapLib/library/DrawingManager_min.css"></script><!-- 百度地图3.0 End --></head><body><div id="app"></div></body>
</html>

组件内示例代码如下:

<!-- 测距 -->
<template><div style="height:100%;width:100%"><div id="allmap9"></div></div>
</template><script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';export default {//import引入的组件需要注入到对象中才能使用components: {},data() {//这里存放数据return {};},//监听属性 类似于data概念computed: {},//监控data中的数据变化watch: {},//方法集合methods: {initMap() {// 百度地图API功能var map = new BMap.Map("allmap9");map.centerAndZoom(new BMap.Point(116.4035, 39.915), 8);//目前离线不支持城市名称//map.centerAndZoom("北京",8);  //初始化地图,设置城市和地图级别。var pointA = new BMap.Point(116.410899, 39.907916); // 创建点坐标A--北京var pointB = new BMap.Point(117.211181, 39.013024); // 创建点坐标B--天津var polyline = new BMap.Polyline([pointA, pointB], {strokeColor: "blue",strokeWeight: 6,strokeOpacity: 0.5,}); //定义折线map.addOverlay(polyline); //添加折线到地图上setTimeout(function() {layer.alert("从北京到天津的距离是:" +(map.getDistance(pointA, pointB) / 1000).toFixed(2) +" 公里。"); //获取两点距离,保留小数点后两位}, 1000);},},//生命周期 - 创建完成(可以访问当前this实例)created() {},//生命周期 - 挂载完成(可以访问DOM元素)mounted() {this.initMap();},beforeCreate() {}, //生命周期 - 创建之前beforeMount() {}, //生命周期 - 挂载之前beforeUpdate() {}, //生命周期 - 更新之前updated() {}, //生命周期 - 更新之后beforeDestroy() {}, //生命周期 - 销毁之前destroyed() {}, //生命周期 - 销毁完成activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style lang="scss" scoped>
//@import url(); 引入公共css类
#allmap9 {width: 100%;height: 100%;overflow: hidden;margin: 0;font-family: "微软雅黑";
}
</style>

地图实现效果展示:
在这里插入图片描述
上一篇:百度离线地图示例之一:地图展示
下一篇:百度离线地图示例之三:矢量图
系列文章后续一直有进行更新,有不完善的地方,可加微信一起交流:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/ICEsXcY6.shtml

相关文章

距离测度

欧氏距离测度&#xff08;EuclideanDistanceMeasure&#xff09; 也称欧几里得距离&#xff0c;在一个N维度的空间里&#xff0c;求两个点的距离&#xff0c;这个距离肯定是一个大于等于零的数字&#xff0c;那么这个距离需要用两个点在各自维度上的坐标相减&#xff0c;平方后…

测量地图距离

1&#xff1a;首先新建矢量图层&#xff0c;用来显示坐标点等&#xff1a; lineLayer new SuperMap.Layer.Vector(“lineLayer”); polygonLayer newSuperMap.Layer.Vector(“polygonLayer”); Jia_markers new SuperMap.Layer.Markers(“Jia_markers”); 然后设置一下图层…

高德地图(第二篇)测量距离小工具

实现如下图一样的小工具 操作说明&#xff1a; 1.在地图上长按选点&#xff0c;第一个点添加起点marker,底部导航点为红色表示正在编辑 2.连续选点会弹出气泡计算总距离&#xff0c;底部导航点为红色表示正在编辑 3.点击气泡内垃圾桶会删除当前点,回退到上次内容. 4.点击红…

谷歌地图怎么测距

您可以使用“距离测量工具”轻松计算从 Google 地图上的一个地点到另一地点的距离。 要完成此操作&#xff0c;请执行以下步骤&#xff1a; 访问 maps.google.com。 点击左侧面板底部的 Google 地图实验室链接。 启用距离测量工具。 点击保存更改。 点击地图左下角…

GIS 测距离操作

开发工具与关键技术: SuperMap iDesktop 9D GIS 作者:杨泽平 撰写时间:2020、5、20GIS测距离是通过调用发布在isever服务器上的地图进行的基础操作,他主要是根据地图比例尺在地图中取一个点绘制一条线再通过计算得出他的实际距离,这主要方便得出两地之间的实际距离。 详细…

Win11安装及部署hexo

1、 在本地安装hexo框架 1.1 安装git 下载链接&#xff1a;Git - Downloads (git-scm.com) 安装教程&#xff1a;Git 安装配置 | 菜鸟教程 (runoob.com) 1.2 安装Nodejs 下载链接&#xff1a;下载 | Node.js 中文网 (nodejs.cn) 安装教程&#xff1a;Node.js 安装配置 | …

win10 mbr下装linux,(MBR模式)Win10下安装Ubuntu18.04双系统

1.制作U盘启动工具。 2.删除一个磁盘&#xff0c;不格式化(我删除了200G的磁盘)。 3.启动电脑&#xff0c;按F12进入启动选项&#xff0c;选择U盘启动&#xff0c;安装Ubuntu18.04系统。 4.进入启动界面&#xff0c;选择try ubuntu试用&#xff0c;不要选择立即安装。因为试用时…

win10安装torch

最近由于搞风格迁移&#xff0c;于是去https://github.com/FlyingGoblin/CartoonGAN下载了工程&#xff0c;结果一看&#xff0c;需要安装torch 从作者提供的链接https://github.com/torch/distro进去 把工程clone下来&#xff0c;我放到了D:\torch&#xff0c; 同时注意到在wi…

win2008服务器虚拟内存设置,电脑虚拟内存设置(Win 7/8/10、Windows Server 2003 - 2019)...

一般来说&#xff0c;个人电脑不用设置虚拟内存&#xff0c;现在内存都比较大(一般的 4G、稍微好点的 8G&#xff0c;更好的 16G以上)&#xff0c;这么高的内存已经足够使用。服务器不一样&#xff0c;一方面服务器会随着内存的升高&#xff0c;价格明显升高&#xff1b;另一方…

win10 jungo windriver

目录 前言 1、安装windriver 1.1、disable Secure Boot 1.2、digital driver signing enforcement 2、FPGA 逻辑下载及PCIE驱动安装 2、PCIE PIO通信测试 3、PCIE DMA通信测试 3.1、vs打开BMD工程 3.2、流程演示 3.3、VS2015 PCIE DMA驱动调试程序 3.4、DMA板卡测试…

win10 安装 Phoenix

文章目录 一、前置要求二、安装 Phoenix 一、前置要求 需要 Erlang 18 或更高版本需要 Elixir 1.5 或更高版本需要 Node.js 5.0.0 或更高版本 注意&#xff1a;Phoenix 默认使用 PostgreSQL 作为数据库 &#xff0c;可以在创建新应用时通过参数 --database mysql 来切换到 MyS…

运行win7计算机需要多长时间,WIN7电脑运行太慢怎么解决

windows系统使用时间越长,系统越臃肿,速度也越来越慢&#xff0c;那么WIN7电脑运行太慢怎么解决呢?今天学习啦小编与大家分享下解决WIN7电脑运行太慢的具体操作步骤&#xff0c;有需要的朋友不妨了解下。 WIN7电脑运行太慢解决方法一 win7系统运行太慢一般有以下几个原因&…

win7硬件要求_九代酷睿平台装Win7的方法!2019年九代i5-9400F配B365装机配置单

九代酷睿平台可以装win7吗?理论上九代平台的主板都是不能安装Win7系统的,当然有九代酷睿平台装Win7的方法,不过需要特定的主板可以安装的,就在近期intel发布了B365主板,支持Win7系统,不过需要搭载独立显卡才可以支持,支持核显装机平台。下面装机之家分享一套针对2019年的…

win10安装Ubuntu16.04

第一次安装双系统&#xff0c;踩了不少坑&#xff0c;花了两三天才装好&#xff0c;因为电脑的不同&#xff08;本人电脑联想小新i5&#xff09;&#xff0c;网上那些安装过程有些不适用&#xff0c;所以花了好长时间&#xff0c;甚至差点决定去重装系统了&#xff0c;为了以后…

HD2500显卡驱动linux,Intel发布HD Graphics 2500/4000显卡Win10驱动下载

IT之家讯 Intel发布了用于第三代CPU核心显卡HD Graphics 2500/4000的新版Win7/Win8.1/Win10驱动程序&#xff0c;版本号为15.33.39.4276&#xff0c;本次更新最大特点就是加入了对Win10的支持。但需要注意的是&#xff0c;Windows10系统安装该驱动过程中会提示“驱动程序未签名…

华硕u4000u 重装window7 重装win7 重装window10 重装win10 重装系统 戴尔 联想 鸿基 重装系统远程协助

很多人都会遇到华硕U4000或者U4000&#xff0c;window10降级成window7&#xff0c;各种ghost原版镜像都无法安装的问题。 下面就是解决步骤。 可以先参考博客&#xff1a;https://blog.csdn.net/jessical1020/article/details/64906925 boot设置 1&#xff0e;F2进入boot&a…

福利来了!手把手教你Python爬取女神套图

疲惫的生活里总要有些温柔梦想吧 目标URL&#xff1a;http://www.win4000.com/meinvtag4_1.html 爬取美桌网某个标签下的美女壁纸&#xff0c;点进详情页可以发现&#xff0c;里面是一组套图 一、网页分析 翻页查看 URL 变化规律&#xff1a; http://www.win4000.com/meinvt…

小新V4000 UEFI装WIN7系统

2.8、【保存更改】——》点【是】 2.9、然后在ESP分区点击【指派新的驱动器号&#xff08;盘符&#xff09;】 2.10、指派盘符之后&#xff0c;可看到ESP分区容量为空&#xff0c;指派的盘符是F盘 3、拷贝下载win7 旗舰版GHO文件进去。如果是虚拟机&#xff0c;你可以关闭虚拟机…

使用win10+RTX4000从零搭建pytorch+CUDA+cudnn的经验之谈

前言 最近有本地部署深度学习模型的需求&#xff0c;故采购了新电脑&#xff0c;以往都是在云端已经搭建好的环境下操作&#xff0c;还从来没有本地从零搭建&#xff0c;所以来总结一下昨天搭建时碰到的障碍和一些经验分享。注&#xff1a;本文不提供具体教程&#xff0c;因为…

(一)Win32进程通信 —— 自定义消息实现

自定义消息 系统定义消息&#xff0c;非用户定义&#xff0c;其范围在[0x0000&#xff0c;0x03ff] 之间&#xff0c;也就是说我们定义的消息的范围不能在这之间&#xff0c; 如果用户自定义的消息&#xff0c;可以使用如下两种方式&#xff08;其实不止两种&#xff09;&#x…