首先先看效果图~
简介
MapVGL
MapVGL,是一款基于WebGL的地理信息可视化库,可以用来展示大量基于3D的地理信息点线面数据。设计初衷主要是为了解决大数据量的三维地理数据展示问题及一些炫酷的三维效果
其核心就是,通过地理信息数据,生成可视化图层。然后把可视化图层添加在地图上层进行管理
MapVGL提供了大量的模型,包括点图层、线图层、聚合类图层等等。每一种模型都提供了Demo,可以直接运行看到效果
网址:MapVGL (baidu)
在 html 文件中 head 头部导入需要的依赖信息
<!-- 百度地图基础库,需要自己去百度地图官网申请ak --><script src="=1.0&type=webgl&ak=自己的ak"></script><script src=".min.js"></script><script src=".js"></script><script src="@1.0.0-beta.152/dist/mapvgl.min.js"></script><script src="@1.0.0-beta.152/dist/mapvgl.threelayers.min.js"></script>
进行全局样式配置
<style>html,body {width: 100%;height: 100%;margin: 0;padding: 0;}#map_container {width: 100%;height: 100%;margin: 0;}</style>
这一步非常重要,不设置的话,地图无法显示。
在使用现成的模板进行改造时,一些模板不能设置高度为100%,否则整体显示就会出错,这时候可以在 map_container 外面再加一个 div ,并设置这个 div 的 height 为固定值
<div style="width: 100%; height: 500px;margin: auto;"><div id="map_container"></div>
</div>
编写一个容器用于展示地图,由于 common.js 文件中已经将 id 名称固定了,所以这里不能修改,只能写 map_container
<div id="map_container"></div>
编写 js 代码,初始化地图
<script type="text/javascript"&load= function (){usewheel=function (e) {e= e || window.event;if(document.all){e.cancelBubble=true;}else{ e.stopPropagation(); }};/* 地图 使用ajax异步请求数据 */var map = initMap({tilt: 41.8,heading: 0,center: [105.552849, 28.847593],zoom: 6,style: purpleStyle});var citys = ['北京', '香港', '银川', '哈尔滨', '长春', '沈阳', '济南', '南京','合肥', '杭州','南昌', '福州',];var randomCount = citys.length; // 模拟的飞线的数量var curve = new mapvgl.BezierCurve();var data = [];// 构造数据while (randomCount--) {/*设置起始城市,从哪个点出发向外扩散*/var startPoint = CenterByCityName('乌海');var endPoint = CenterByCityName(citys[randomCount]);var length = 0;var startPoint = map.lnglatToMercator(startPoint.lng, startPoint.lat);var endPoint = map.lnglatToMercator(endPoint.lng, endPoint.lat);curve.setOptions({start: [startPoint[0], startPoint[1]],end: [endPoint[0], endPoint[1]]});var curveModelData = Points(60);data.push({geometry: {type: 'LineString',coordinates: curveModelData},properties: {count: Math.random()}});}var view = new mapvgl.View({effects: [new mapvgl.BrightEffect({threshold: 0,blurSize: 2,clarity: 1}),],map: map});var lineLayer = new mapvgl.LineTripLayer({color: 'rgb(255, 255, 204)', // 飞线动画颜色step: 1});view.addLayer(lineLayer);lineLayer.setData(data.map(item => {dinates = dinates.map(item => {item[2] += 3;return item;});return item;}));var lineLayer = new mapvgl.SimpleLineLayer({blend: 'lighter',color: 'rgb(255, 153, 0, 1)' // 飞线颜色});view.addLayer(lineLayer);lineLayer.setData(data);}</script>
完整代码
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="utf-8"><title>Picman | Home</title><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta name="viewport" content="initial-scale=1.0, user-scalable=no"><meta http-equiv="X-UA-Compatible" content="IE=edge"><style>html,body {width: 100%;height: 100%;margin: 0;padding: 0;}#map_container {width: 100%;height: 100%;margin: 0;}</style><script type="text/javascript"&load = function() {usewheel = function(e) {e = e || window.event;if (document.all) {e.cancelBubble = true;} else {e.stopPropagation();}};/* 地图 使用ajax异步请求数据 */var map = initMap({tilt: 41.8,heading: 0,center: [105.552849, 28.847593],zoom: 6,style: purpleStyle});var citys = ['北京', '香港','银川', '哈尔滨','长春', '沈阳','济南', '南京','合肥', '杭州','南昌', '福州',];var randomCount = citys.length; // 模拟的飞线的数量var curve = new mapvgl.BezierCurve();var data = [];// 构造数据while (randomCount--) {var startPoint = CenterByCityName('乌海');var endPoint = CenterByCityName(citys[randomCount]);var length = 0;var startPoint = map.lnglatToMercator(startPoint.lng, startPoint.lat);var endPoint = map.lnglatToMercator(endPoint.lng, endPoint.lat);curve.setOptions({start: [startPoint[0], startPoint[1]],end: [endPoint[0], endPoint[1]]});var curveModelData = Points(60);data.push({geometry: {type: 'LineString',coordinates: curveModelData},properties: {count: Math.random()}});}var view = new mapvgl.View({effects: [new mapvgl.BrightEffect({threshold: 0,blurSize: 2,clarity: 1}),],map: map});var lineLayer = new mapvgl.LineTripLayer({color: 'rgb(255, 255, 204)', // 飞线动画颜色step: 1});view.addLayer(lineLayer);lineLayer.setData(data.map(item => {dinates = dinates.map(item => {item[2] += 3;return item;});return item;}));var lineLayer = new mapvgl.SimpleLineLayer({blend: 'lighter',color: 'rgb(255, 153, 0, 1)' // 飞线颜色});view.addLayer(lineLayer);lineLayer.setData(data);}</script><!-- 地图 --><!-- 百度地图基础库,需要自己去百度地图官网申请ak --><script src="=1.0&type=webgl&ak=***"></script><script src=".min.js"></script><script src=".js"></script><script src="@1.0.0-beta.152/dist/mapvgl.min.js"></script><script src="@1.0.0-beta.152/dist/mapvgl.threelayers.min.js"></script></head><body><div id="map_container"></div></body>
</html>
首先登录百度地图开放平台,登录后选择开发文档 -> JavaScript API
选择开发指南 -> 账号和获取秘钥 ->按照提示依次完成即可
申请ak时,应用类型要选择浏览器端
提交后就可以获得自己的秘钥
本文发布于:2024-01-28 18:40:24,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064384299458.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |