离线百度地图使用

news/2025/3/15 2:22:51/

最近有个项目是用到了地图功能,其实地图功能使用起来应该没啥难度,看看api,例子往项目上一粘贴,改一下就可以达到需求,所以使用方面,对大家来说并不是很难。
我这次接到的需求是离线百度地图,给我一个ip,应该是服务器的,调用后台配置好的地图文件,然后前端往上面标点。由于我原来只用到过线上的,首次弄离线就有点蒙圈,刚开始没明白咋回事,弄了半天才搞明白,原来后台是把东西都配置好了,我只要请求就行了,以下是我引入以及在vue中使用的代码:

  • index.html
<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="renderer" content="webkit"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><title><%= webpackConfig.name %></title><link rel="stylesheet" type="text/css" href="http://www.hotelhy.club/map/offlinemap/css/bmap.css"/><!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--><style>html,body,#app {height: 100%;margin: 0px;padding: 0px;}.chromeframe {margin: 0.2em 0;background: #ccc;color: #000;padding: 0.2em 0;}#loader-wrapper {position: fixed;top: 0;left: 0;width: 100%;height: 100%;z-index: 999999;}#loader {display: block;position: relative;left: 50%;top: 50%;width: 150px;height: 150px;margin: -75px 0 0 -75px;border-radius: 50%;border: 3px solid transparent;border-top-color: #FFF;-webkit-animation: spin 2s linear infinite;-ms-animation: spin 2s linear infinite;-moz-animation: spin 2s linear infinite;-o-animation: spin 2s linear infinite;animation: spin 2s linear infinite;z-index: 1001;}#loader:before {content: "";position: absolute;top: 5px;left: 5px;right: 5px;bottom: 5px;border-radius: 50%;border: 3px solid transparent;border-top-color: #FFF;-webkit-animation: spin 3s linear infinite;-moz-animation: spin 3s linear infinite;-o-animation: spin 3s linear infinite;-ms-animation: spin 3s linear infinite;animation: spin 3s linear infinite;}#loader:after {content: "";position: absolute;top: 15px;left: 15px;right: 15px;bottom: 15px;border-radius: 50%;border: 3px solid transparent;border-top-color: #FFF;-moz-animation: spin 1.5s linear infinite;-o-animation: spin 1.5s linear infinite;-ms-animation: spin 1.5s linear infinite;-webkit-animation: spin 1.5s linear infinite;animation: spin 1.5s linear infinite;}@-webkit-keyframes spin {0% {-webkit-transform: rotate(0deg);-ms-transform: rotate(0deg);transform: rotate(0deg);}100% {-webkit-transform: rotate(360deg);-ms-transform: rotate(360deg);transform: rotate(360deg);}}@keyframes spin {0% {-webkit-transform: rotate(0deg);-ms-transform: rotate(0deg);transform: rotate(0deg);}100% {-webkit-transform: rotate(360deg);-ms-transform: rotate(360deg);transform: rotate(360deg);}}#loader-wrapper .loader-section {position: fixed;top: 0;width: 51%;height: 100%;background: #7171C6;z-index: 1000;-webkit-transform: translateX(0);-ms-transform: translateX(0);transform: translateX(0);}#loader-wrapper .loader-section.section-left {left: 0;}#loader-wrapper .loader-section.section-right {right: 0;}.loaded #loader-wrapper .loader-section.section-left {-webkit-transform: translateX(-100%);-ms-transform: translateX(-100%);transform: translateX(-100%);-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);}.loaded #loader-wrapper .loader-section.section-right {-webkit-transform: translateX(100%);-ms-transform: translateX(100%);transform: translateX(100%);-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);}.loaded #loader {opacity: 0;-webkit-transition: all 0.3s ease-out;transition: all 0.3s ease-out;}.loaded #loader-wrapper {visibility: hidden;-webkit-transform: translateY(-100%);-ms-transform: translateY(-100%);transform: translateY(-100%);-webkit-transition: all 0.3s 1s ease-out;transition: all 0.3s 1s ease-out;}.no-js #loader-wrapper {display: none;}.no-js h1 {color: #222222;}#loader-wrapper .load_title {font-family: 'Open Sans';color: #FFF;font-size: 19px;width: 100%;text-align: center;z-index: 9999999999999;position: absolute;top: 60%;opacity: 1;line-height: 30px;}#loader-wrapper .load_title span {font-weight: normal;font-style: italic;font-size: 13px;color: #FFF;opacity: 0.5;}</style></head><body><div id="app"><div id="loader-wrapper"><div id="loader"></div><div class="loader-section section-left"></div><div class="loader-section section-right"></div><div class="load_title">正在加载系统资源,请耐心等待</div></div></div><!-- <script type="text/javascript" src="static/map_load.js"></script> --><!-- <script type="text/javascript" src="map/offlinemap/map_load.js"></script>  --><script type="text/javascript" src="{你的ip}/offlinemap/map_load.js"></script><script type="text/javascript" src="{你的ip}/offlinemap/tools/LuShu_min.js"></script><script type="text/javascript" src="{你的ip}/offlinemap/tools/TrackAnimation_min.js"></script><script type="text/javascript" src="{你的ip}/offlinemap/tools/DistanceTool.min.js"></script></body>
</html>
  • map.vue
<template><div class="map" id="map"><div id="container" style="{height:mapHeight}"></div></div>
</template>
<script>
import {data} from "./data/styleData.js";
import {infos} from './data/infoData.js';
import { mapLineRelation,mapDeviceInfo,mapSensorInfo } from "@/api/map";
export default {data(){return{map: null,mapHeight: 500 + "px"}},created(){},mounted(){this.initMapHeight();// 创建Map实例this.map = new BMapGL.Map("container");  // 绘制弹出框let infoWindow = this.drawInfoWindow("塔杆信息","tgInfo")// 描述第一个点 let point = this.drawIcon(new BMapGL.Point(121.56467027463893,29.811085085528376),infoWindow)// 描述第二个点let point1 = this.drawIcon(new BMapGL.Point(121.55895705159733,29.81276159334472),infoWindow);// 添加地图组件this.addMapControl(point)// map.setMapStyleV2({styleJson: data});// 绘制路线this.drawLine([point,point1]);// 地图自适应window.onresize = () => {return (() => {this.initMapHeight()})()}},methods:{addMapControl(point){const {map} = this;map.centerAndZoom(point, 17)map.enableScrollWheelZoom(true); 	var navi3DCtrl = new BMapGL.NavigationControl3D();  // 添加3D控件map.addControl(navi3DCtrl);var scaleCtrl = new BMapGL.ScaleControl();  // 添加比例尺控件map.addControl(scaleCtrl);var zoomCtrl = new BMapGL.ZoomControl();   // 添加缩放控件map.addControl(zoomCtrl);	// 将标注添加到地图中},drawIcon(point,infoWindow){const {map} = this;var myIcon = new BMapGL.Icon(require("./img/gt.png"), new BMapGL.Size(90,101));var marker = new BMapGL.Marker(point,{icon:myIcon});marker.addEventListener("click", function(){          map.openInfoWindow(infoWindow, point); //开启信息窗口}); map.addOverlay(marker);   for(let i=0;i<6;i++){let opt = {}if(i<3){opt.anchor = new BMapGL.Size(-40, 50-i*32);}else{opt.anchor = new BMapGL.Size(-70, 50-(i-3)*32);}let iconMaker = new BMapGL.Marker(point,{icon:new BMapGL.Icon(require(`./img/${i+1}.png`), new BMapGL.Size(30,30), opt)})map.addOverlay(iconMaker);iconMaker.addEventListener('click',function(){alert(i)})}return point;},drawInfoWindow(title,infoType){var opts = {width : 200,     // 信息窗口宽度height: 124,     // 信息窗口高度title : title , // 信息窗口标题}return new BMapGL.InfoWindow(infos[infoType],opts);  // 创建信息窗口对象                   // 将标注添加到地图中},drawLine(points){const {map} = this;for(let i=0;i<points.length;i++){if(points.length-1 == i) return;var polyline = new BMapGL.Polyline([points[i],points[i+1]], {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});map.addOverlay(polyline);}},initMapHeight(){let main = document.getElementsByClassName('app-main');let map = document.getElementById('map');map.style.height = main[0].offsetHeight + "px";}}
}
</script>
<style>#container{width: 100%;height: 100%;overflow: hidden;}  
.BMap_cpyCtrl {display: none;
}.anchorBL {display: none;
}.BMap_mask {z-index: 999;
}
</style>

离线地图下载地址:https://download.csdn.net/download/jijunqing321/75277057
网盘:
链接:https://pan.baidu.com/s/13IFOS_gRB8MieWF7wU7ceQ
提取码:812x

具体的百度地图如何获取的,需要再研究一下~研究明白会再分享给大家!


http://www.ppmy.cn/news/792251.html

相关文章

高德离线地图TMS服务教程

离线地图开发主要有两部分组成&#xff1a;1、获取离线地图数据&#xff1b;因为离线地图一般都是局域网&#xff0c;所以需要离线地图数据放在内网中使用&#xff1b;2、离线地图服务器搭建以及二次开发接口提供&#xff0c;离线地图是一种服务&#xff0c;就像我们Apache提供…

android如何设置离线地图优先,高德地图离线导航优先怎么设置-高德地图离线导航优先的设置方法 - 河东软件园...

高德地图是我们出门驾驶必备的软件&#xff0c;它可以智能导航&#xff0c;根据我们目前行驶的方向来为我们定制最合适的路线。但是这款软件在导航的时候会使用很多的手机流量&#xff0c;经常使用实在是浪费流量。最好的方法就是使用离线导航功能了&#xff0c;这样我们即使没…

vue前端项目引用高德离线地图

由于上一篇下载离线地图瓦片的工具有问题&#xff0c;需要更换工具重新下载离线瓦片&#xff0c;步骤如下&#xff1a; 下载离线瓦片&#xff08;后端&#xff09; 1.1用MapDownloader,下载离线地图瓦片 工具提取码: mmdl 需要对工具作如下配置 &#xff1a; MapDownloader.exe…

8、 高德离线地图开发教程

下载离线地图数据(支持谷歌、百度、高德等所有地图源) 发布时间&#xff1a;2019-03-12 版权&#xff1a;BIGEMAP 离线地图分为两种&#xff1a;一种叫“金字塔瓦片”数据&#xff0c;一种叫“矢量地图数据”。我们看的在线地图比如&#xff0c;百度&#xff0c;谷歌&#xff…

百度离线地图

百度离线地图 1. 申请百度地图ak2.获取百度地图api代码3.修改百度地图baidu-api.js3.1输出缺少js模块名3.2 拦截http3.3设置引用本地资源路径3.4 下载缺少js模块 4.加载瓦片地图4.1再次修改baidu-api.js文件 最近有个离线地图需求&#xff0c;在网上搞了搞看到 某大神写的稿子…

jquery使用离线高德地图

第一步是&#xff1a;先引入相关的离线地图包 百度网盘分享位置&#xff1a; 链接: https://pan.baidu.com/s/1T-PA1zGJASx0p8fr4Ey_mA?pwd1258 提取码: 1258 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 第二步是 添加key <script type"text/javascr…

高德离线地图开发教程

(百度、高德、谷歌)离线地图二次开发 发布时间&#xff1a;2019-04-10 版权&#xff1a; 1、如何搭建离线地图开发环境 2、下载离线地图数据(金字塔瓦片数据&#xff09; 3、添加离线地图数据到本地服务器 4、离线地图二次开发接口&#xff08;离线地图API&#xff09; 5、离…

离线地图开发瓦片数据详解

离线地图分为两种&#xff1a;一种叫“金字塔瓦片”数据&#xff0c;一种叫“矢量地图数据”。我们看的在线地图比如&#xff0c;百度&#xff0c;谷歌&#xff0c;高德等等网页上的地图&#xff0c;都是金字塔瓦片&#xff1b;另外一种是手机上用来导航的&#xff0c;比如高德…