【可视化大屏开发】18. 加餐-ECharts+百度地图API实现热力图

news2025/1/17 3:12:37

ECharts结合百度地图API能获得更好的使用体验。

效果展示

放大后的效果

切换卫星地图模式

实现步骤

1. 通过Python实现GPS数据模拟

2. 通过IDEA开发地图

通过Python实现GPS数据模拟

import random
from math import cos, sin, radians, sqrt
import json

  

def generate_random_coordinates(center_lat, center_lon, radius, num_points):

    """

    该方法生成的结果是,以中心点为中心,半径为 radius 的圆形区域内,num_points 个随机点的经纬度坐标。

    其中,中心点的经纬度坐标为 center_lat, center_lon,半径为 radius 米。

    该方法使用了球面坐标系,将经纬度转换为球面坐标,然后在球面坐标系中生成随机点。

    """

    points = []

    # 将经纬度转换为弧度

    center_lat_rad = radians(center_lat)

    center_lon_rad = radians(center_lon)

  

    # 循环生成 num_points 个随机点

    for _ in range(num_points):

        # 生成随机的极径和方位角

        r = radius * sqrt(random.random())

        theta = random.uniform(0, 2 * 3.141592653589793)  # 方位角范围在 [0, 2π) 内

  

        # 计算偏移的直角坐标

        delta_x = r * cos(theta)

        delta_y = r * sin(theta)

  

        # 将直角坐标转换为经纬度

        new_lat = center_lat + (delta_y / 111111)

        new_lon = center_lon + (delta_x / (111111 * cos(center_lat_rad)))

  

        # 添加新的经纬度坐标到列表中

        points.append((new_lat, new_lon))

  

    return points

  
  
  

# 给定的经纬度坐标和半径,

center_latitude = 26.389193
center_longitude = 106.642337
radius_meters = 10000   # 10000 米

  

# 生成 50 个随机经纬度坐标点

random_coordinates = generate_random_coordinates(center_latitude, center_longitude, radius_meters, 30000)

  
  
  

# # 打印生成的坐标点

# for idx, coord in enumerate(random_coordinates, start=1):

#     print(f"Point {idx}: Latitude={coord[0]}, Longitude={coord[1]}")

    # print(f"{coord[1]},{coord[0]}")

  

f = []

for idx, coord in enumerate(random_coordinates, start=1):

    adir = {}

    adir["elevation"] = 3000 * random.random()  # 随机给定海拔高度

    adir["coord"] = [coord[1], coord[0]]  # 坐标点

    f.append(adir)

  

resoult = [f]

  

# 将随机生成的数据保存到json文件中

with open('Guiyangrandom_coordinates.json', 'w') as f:

    json.dump(resoult, f)

样例数据展示

通过IDEA开发地图

<!DOCTYPE html>  
<html>  
<head>  
  <meta charset="utf-8">  
	<title>贵阳市热力图-与百度地图API结合</title>
  <!-- 引入 ECharts -->  <script src="https://cdn.staticfile.net/jquery/3.7.1/jquery.min.js"></script>  
  <script src="https://registry.npmmirror.com/echarts/5.5.0/files/dist/echarts.min.js"></script>  
  <script src="https://api.map.baidu.com/api?v=3.0&ak=这里换成你的百度地图key"></script>  
  <script src="https://registry.npmmirror.com/echarts/5.5.0/files/dist/extension/bmap.min.js"></script>  
</head>  
<body>  
<!-- 为ECharts准备一个具备大小(宽高)的DOM -->  
<div id="main" style="width: 100%;height:600px;"></div>  
<script type="text/javascript">  
  // 获取图表容器元素,并初始化ECharts实例  
  var chartDom = document.getElementById('main');  
  var myChart = echarts.init(chartDom);  
  var option;  
  
  // 从JSON文件中异步加载数据  
  $.get('jsons/Guiyangrandom_coordinates.json', function (data) {  
    // 处理数据,转换为ECharts要求的格式  
    var points = [].concat.apply(  
            [],  
            data.map(function (track) {  
              // 对每条轨迹进行处理,将坐标点转换为ECharts可识别的格式  
              return track.map(function (seg) {  
                // 每个坐标点加上一个维度值1  
                return seg.coord.concat([1]);  
              });  
            })  
    );  
  
  
    // 定制配置项  
    // 配置项对象,用于设置地图可视化效果  
    option = {  
      animation: true, // 是否开启动画效果  
      bmap: { // 地图配置项  
        center: [106.642337,26.389193],  // 设置地图中心点坐标为贵州师范大学的位置  
        zoom: 14, // 地图缩放级别  
        roam: true // 是否开启地图漫游功能  
      },  
      visualMap: { // 可视化映射配置项  
        show: true, // 是否显示可视化控件  
        top: 'top', // 控件位置,置顶  
        min: 0, // 映射范围最小值  
        max: 5, // 映射范围最大值  
        seriesIndex: 0, // 关联的系列索引  
        calculable: true, // 是否支持计算  
        inRange: { // 映射范围内颜色设置  
          color: ['blue', 'blue', 'green', 'yellow', 'red'] // 设置不同范围的颜色  
        }  
      },  
      series: [ // 系列配置,用于设置热力图  
        {  
          type: 'heatmap', // 热力图类型  
          coordinateSystem: 'bmap', // 使用bmap坐标系  
          data: points, // 热力图数据点  
          pointSize: 5, // 点大小  
          blurSize: 6 // 模糊半径  
        }  
      ]  
    };  
  
    myChart.setOption(option);  
    // 添加百度地图插件  
    var bmap = myChart.getModel().getComponent('bmap').getBMap();  
    bmap.addControl(new BMap.MapTypeControl());  
  });  
  
  // 如果option存在,则再次设置图表选项  
  option && myChart.setOption(option);  
  
</script>  
</body>  
</html>

每个具体位置的经纬度,可以通过百度地图API接口的拾取坐标系统 (baidu.com),实现GPS获取

效果

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

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

相关文章

【web网页制作】html+css网页制作学校网站主题校园网页(5页面)【附源码】

学校网页制作目录 涉及知识写在前面一、网页主题二、网页效果Page1、简介Page2、校园风光Page3、学术研究Page4、校训阐述Page5、留言 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码4.1 主页模块源码4.2 源码获取方式 作者寄语 涉及知识 学校网站主…

【云计算】云网络产品体系概述

云网络产品体系概述 在介绍云网络产品体系前&#xff0c;先介绍几个与云计算相关的基础概念。 阿里云在基础设施层面分为 地域 和 可用区 两层&#xff0c;关系如下图所示。在一个地域内有多个可用区&#xff0c;每个地域完全独立&#xff0c;每个可用区完全隔离&#xff0c;同…

低噪声、低电压、低功耗特点的双运算放大器D722

概述 Silicore D722具有低噪声、低电压、低功耗特点的双运算放大器&#xff0c;具有9MHz的高增益带宽积&#xff0c;转换率为8.5V/μs, 5V时静态电流为0.97mA&#xff0f;每个放大器。适用于低电压和低噪声场合的应用系统&#xff0c;它提供轨到轨的输出摆幅&#xff0c;符合工…

【C++】1.从C语言转向C++

目录 一.对C的认识 二.C的关键字 三.命名空间 3.1命名空间的定义 3.2命名空间的使用 四.C的输入与输出 五.缺省参数 5.1全缺省参数 5.2半缺省参数 六.函数重载 七.引用 7.1引用的特性 7.2引用和指针的区别 八.内联函数 九.auto关键字&#xff08;C1…

面试:如何设计一个注册中心?

大家好&#xff0c;我是田哥 上周&#xff0c;一位群里的朋友反馈面试情况&#xff1a; 今天&#xff0c;给大家分享如何设计一个注册中心。其实这个问题&#xff0c;我之前在知识星球里分享过&#xff0c;可能是因为时间比较久了&#xff0c;加上这位朋友加入不久&#xff0c;…

提升编程效率的秘密武器:IntelliJ IDEA

IntelliJ IDEA的基本介绍 正如一个故事的开头&#xff0c;我们从一个名字开始 - IntelliJ IDEA。这是一个在程序员中广受欢迎的集成开发环境&#xff08;IDE&#xff09;&#xff0c;由捷克公司JetBrains开发。它的名字听起来有些复杂&#xff0c;但实际上&#xff0c;它的功能…

Windows联网状态工具TCPView

文章目录 TCPView命令行工具更多Sysinternals Suite工具 TCPView TCPView用于显示系统上所有 TCP 和 UDP 终结点的详细列表&#xff0c;包括本地和远程地址以及 TCP 连接的状态&#xff0c;界面如下。 列表的表头含义如下 表头含义表头含义Process name应用名称Process id进程…

Web App 入门指南:构建预测模型 App 的利器(shiny)

Web App 入门指南&#xff1a;构建预测模型 App 的利器 简介 近年来&#xff0c;随着机器学习和人工智能技术的快速发展&#xff0c;预测模型在各行各业得到了广泛应用。为了方便地部署和使用预测模型&#xff0c;将模型构建成 Web App 是一种非常好的选择。Web App 无需下载…

【vue】v-if 条件渲染

v-if 不适用于频繁切换显示模式的场景 修改web.user&#xff0c;可看到条件渲染的效果 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initi…

ChatGPT 会被 OpenAI 的版权诉讼摧毁吗?|TodayAI

未来人工智能是否能与人类融合成为一个引人关注的问题&#xff0c;但目前&#xff0c;ChatGPT等人工智能技术可能首先需要面对一个更紧迫的挑战&#xff1a;大规模的版权侵权诉讼。近期&#xff0c;ChatGPT因涉嫌在未经授权的情况下使用大量作者的作品进行训练&#xff0c;而被…

元象4.2B参数 MoE大模型实战

01 简介 近期&#xff0c;元象公司推出了其首个Moe大模型XVERSE-MoE-A4.2B。该模型采用了混合专家模型架构&#xff08;Mixture of Experts&#xff09;&#xff0c;并拥有4.2B的激活参数&#xff0c;其性能可与13B模型相媲美。值得一提的是&#xff0c;这个模型是完全开源的&…

算法设计与分析实验报告c++实现(最近点对问题、循环赛日程安排问题、排序问题、棋盘覆盖问题)

一、实验目的 1&#xff0e;加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、最…

《剑指 Offer》专项突破版 - 面试题 107 : 矩阵中的距离(C++ 实现)

题目链接&#xff1a;矩阵中的距离 题目&#xff1a; 输入一个由 0、1 组成的矩阵 M&#xff0c;请输出一个大小相同的矩阵 D&#xff0c;矩阵 D 中的每个格子是矩阵 M 中对应格子离最近的 0 的距离。水平或竖直方向相邻的两个格子的距离为 1。假设矩阵 M 中至少有一个 0。 …

Google 推出 Gemini 1.5 Pro能处理音频;iOS 18或带来Safari 浏览助手;Llama 3 开源模型下个月推出

Google 推出 Gemini 1.5 Pro 公共预览版&#xff0c;能处理音频 Google 宣布将通过其 AI 应用平台 Vertex AI 向公众提供 Gemini 1.5 Pro&#xff0c;并且还赋予其「听力」&#xff0c;帮助用户处理音频内容。 用户可以上传会议录音、电视节目等音频内容&#xff0c;无需书面记…

Python计算多个表格中多列数据的平均值与标准差并导出为新的Excel文件

本文介绍基于Python语言&#xff0c;对一个或多个表格文件中多列数据分别计算平均值与标准差&#xff0c;随后将多列数据对应的这2个数据结果导出为新的表格文件的方法。 首先&#xff0c;来看一下本文的需求。现有2个.csv格式的表格文件&#xff0c;其每1列表示1个变量&#x…

如何入门做物联网系统压测?

文章目录 一、政策解读二、MQTT 压测常见场景三、MQTT常见业务场景1、并发连接2、消息吞吐量测试2.1 1 对 12.2 多对1&#xff08;上报&#xff09;2.3 1对多2.4 其它场景 三、MQTT常见性能指标四、MQTT常见性能工具1、emqtt-bench2、JMeter 五、小结 一、政策解读 微信公众号…

功能测试_验证标题长度合法性_边界值法

验证标题长度合法性&#xff08;标题长度大于0&#xff0c;小于等于30个字符&#xff09; 开内闭外&#xff0c;保留1和31

《web应用技术》第三次课后练习

实验目的&#xff1a; 1、springboot入门程序撰写并启动 2、使用postman练习参数的获取。 参考&#xff1a;Day04-10. Web入门-SpringBootWeb-快速入门_哔哩哔哩_bilibili

Java | Leetcode Java题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int n nums.length;int best 10000000;// 枚举 afor (int i 0; i < n; i) {// 保证和上一次枚举的元素不相等if (i > 0 && nums…

除了谷歌卫星图还有哪些可以平替的卫星影像图源~~

这几天&#xff08;2024-03-27&#xff09;朋友们都开始反应之前我们分享的ArcGIS直接连接谷歌影像还有GlobalMapper下载地址无效了&#xff01; ArcGIS快速添加无偏移谷歌Google影像 如何轻松下载指定区域的谷歌影像 经过测试&#xff0c;没有错&#xff01;它又被墙了&…