百度地图结合mapvgl实现散点图(大小颜色变化)

2023-10-22 12:40

本文主要是介绍百度地图结合mapvgl实现散点图(大小颜色变化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图
在这里插入图片描述

点的颜色大小都是可调的

  1. 在项目中引入百度地图 ,百度地图封装的common.js,mapv,mapvgl.min.js,
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.0&type=webgl&ak=你的秘钥"></script>
<script src="https://mapv.baidu.com/gl/examples/static/common.js"></script>
<script src="https://mapv.baidu.com/build/mapv.js"></script>
<script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.27/dist/mapvgl.min.js"></script>

2.定义map的dom元素

<div id="map_container"></div>

3.初始化百度地图 可以使用common.js封装的方法,会更加方便快捷。
不过地图容器限制了id必须为 map_container

var cityCenter = mapv.utilCityCenter.getCenterByCityName('南京');
var map = initMap({tilt: 0,center: [cityCenter.lng, cityCenter.lat],zoom: 10,style: snowStyle})

4.准备数据源 利用城市中心点经纬度,来模拟数据,实际生产中可以通过接口返回数据

// 根据城市名来随机获取 多个数据点
var data = [];
var random = 700;
var cities = ["北京","天津","上海","重庆","石家庄","太原","呼和浩特","哈尔滨","长春","沈阳","济南","南京","合肥","杭州","南昌","福州","郑州","武汉","长沙","广州","南宁","西安","银川","兰州","西宁","乌鲁木齐","成都","贵阳","昆明","拉萨","海口"];
while(random--){var cityCenter = mapv.utilCityCenter.getCenterByCityName(cities[parseInt(Math.random() * cities.length)]);data.push({geometry: {type: 'Point',coordinates: [cityCenter.lng - 2 + Math.random() * 4, cityCenter.lat - 2 + Math.random() * 4]},properties: { //点的数据sales: Math.random() * 100}});
}
//控制只展示大于50的数据
data = data.filter( _ =>_.properties.sales > 50);

5.绘制数据源

//1.生成 mapvgl 视图 View
var view = new mapvgl.View({map});
//2.初始化Intensity对象 工具类,使得点随数据的大小,有差异,更直观的反应变化
var intensity = new mapvgl.Intensity({min: 0,max: 100,minSize: 5,maxSize: 30,gradient: {0: 'rgba(25,66,102,0.8)',0.3: 'rgba(145,102,129,0.8)',0.7: 'rgba(210,131,137,0.8)',1:'rgba(248,177,149,0.8)'}});//3.初始化 mapvgl 的 PointLayer对象
var pointLayer = new mapvgl.PointLayer({size: function(data){console.log(intensity.getSize(data.properties.sales));return intensity.getSize(data.properties.sales)},color: function(data){return intensity.getColor(data.properties.sales);}});
//3.将 PointLayer 对象加入 View 中
view.addLayer(pointLayer);
//4.将data 与 PointLayer 进行绑定 
pointLayer.setData(data);

6.html源码如下

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>百度地图</title><meta name="description" content=""><meta name="keywords" content=""><link href="" rel="stylesheet"><style type="">html, body, #map_container {width: 100%;height: 100%;padding: 0;margin: 0;}#map_container {width: 100%;height: 100%;}.anchorBL, .Bmap_cpyCtrl {display: none;}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=1.0&type=webgl&ak=mQnIhkcrCDE5ZVY0xIhpqi6w8BEINcx4"></script><script src="https://mapv.baidu.com/gl/examples/static/common.js"></script><script src="https://mapv.baidu.com/build/mapv.js"></script><script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.27/dist/mapvgl.min.js"></script><!-- 如果使用到Three.js相关的图层需要引用 --><script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.53/dist/mapvgl.threelayers.min.js"></script></head><body><div id="map_container"></div><script>var map = initBMap();var data = initData();setData(data, map);//初始化百度地图 common.js快速定义百度地图map对象function initBMap(){var cityCenter = mapv.utilCityCenter.getCenterByCityName('南京');var map = initMap({tilt: 0,center: [cityCenter.lng, cityCenter.lat],zoom: 10,style: snowStyle})return map;}// 准备数据源	function initData(){var data = [];var random = 700;var cities = ["北京","天津","上海","重庆","石家庄","太原","呼和浩特","哈尔滨","长春","沈阳","济南","南京","合肥","杭州","南昌","福州","郑州","武汉","长沙","广州","南宁","西安","银川","兰州","西宁","乌鲁木齐","成都","贵阳","昆明","拉萨","海口"];while(random--){var cityCenter = mapv.utilCityCenter.getCenterByCityName(cities[parseInt(Math.random() * cities.length)]);data.push({geometry: {type: 'Point',coordinates: [cityCenter.lng - 2 + Math.random() * 4, cityCenter.lat - 2 + Math.random() * 4]},properties: {sales: Math.random() * 100}});}//控制只展示大于50的数据data = data.filter( _ =>_.properties.sales > 50);return data;}function setData(data, map){//绘制数据源//1.生成 mapvgl 视图 Viewvar view = new mapvgl.View({map});//2.初始化Intensity对象var intensity = new mapvgl.Intensity({min: 0,max: 100,minSize: 5,maxSize: 30,gradient: {0: 'rgba(25,66,102,0.8)',0.3: 'rgba(145,102,129,0.8)',0.7: 'rgba(210,131,137,0.8)',1:'rgba(248,177,149,0.8)'}});//3.初始化 mapvgl 的 PointLayer对象var pointLayer = new mapvgl.PointLayer({size: function(data){console.log(intensity.getSize(data.properties.sales));return intensity.getSize(data.properties.sales)},color: function(data){return intensity.getColor(data.properties.sales);}});//3.将 PointLayer 对象加入 View 中view.addLayer(pointLayer);//4.将data 与 PointLayer 进行绑定 pointLayer.setData(data);}</script></body>
</html>	

这篇关于百度地图结合mapvgl实现散点图(大小颜色变化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261525

相关文章

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求