数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)

高德地图开发系列文章目录

地图开发实战案例:高德地图弧线连接线标注

高德地图开发智慧社区网格化数据格式产生的无法单击事件的解决方案

高德地图进阶开发实战案例(4):计算骑行的距离和时间

高德地图进阶开发实战案例(9):涟漪动画标注的实现方案

高德地图进阶开发实战案例(2):电子围栏(多边形的绘制)的展示

高德地图进阶开发实战案例(5):矩形可视范围的东北西南角经纬度的获取

高德地图进阶开发实战案例(6):添加自定义图片覆盖物图层获取可视范围经纬度的解决方案

高德地图进阶开发实战案例(10):地图选取起终点OD位置经纬度的驾车规划路线

高德地图web服务API接口开发:获取IP定位显示当前位置的天气预报解决方案

高德地图进阶开发实战案例(7):点是否在多边形内和内外部的数量统计的解决方案

高德地图进阶开发实战案例(12):热力图模拟传播范围以及小区兴趣点POI经纬度的获取方法



b78f6f8c741b4e72bedf276f8dfed3e7.gif


文章目录

高德地图开发系列文章目录

前言

一、项目说明

二、核心代码开发

1.引入库

2.构建DOM容器

3.高德地图开发

(1)初始化地图

(2)个性化地图皮肤

(3)3D控件

(4)信息弹窗

(5)涟漪动画

总结


前言

在数据可视化大屏的开发中,牵涉到地图类开发(即WEB GIS)的,主要使用百度地图、高德地图和腾讯地图。对于国内地图类开发平台而言,百度和高德是做WEB GIS的不二选择,腾讯地图基本使用于小程序类的开发。


一、项目说明

本系统是基于物联网端的智慧治安管理系统,主要是针对执勤人员的分布位置感知状态、执勤设备告警的数据展示分析:


设备自带网络传输功能,可实时将当前位置的经纬度传送是数据库;但采集的经纬度信息为wgs84标准,在大屏读取时,需要转换为高德的火星系坐标;

标注需要分类:告警状态和正常执行状态,采用涟漪动画效果实现;

单击标注需要实现自定义富文本弹窗;

大屏界面UI设计图如下:


f00389e3fa46406f818a27718f9a4e98.jpg


二、核心代码开发

1.引入库

代码如下(示例):

  <!--高德地图核心JS库-->
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=eff803c70ebbfb***"></script>

高德地图地图开发引入时需要注意:

  • 不同版本的v=1.4.15的差异,尤其是在复制官方案例的时候,一定要注意版本的切换,不然就会遇见同样代码无法运行的情况;
  • 除了引入webapi库外,需要根据不同的需求,引入高德的css层叠样式表;

2.构建DOM容器

代码如下(示例):

   <div id="map"></div>

地图采用自适应浏览器的模式,具体见层叠样式表:

/*地图定位*/
.alert {
    width: 288px;
    height: 190px;
    padding-top: 30px;
    background: url("../images/alert.png") no-repeat top center;
}
#map {
    width: 98.5%;
    height: 100%;
    text-align: center;
}
.mapBg {
    background: url(../images/map_border.png) no-repeat left center;
    background-size: contain;
}

3.高德地图开发

(1)初始化地图

    var map = new AMap.Map('map', {
        resizeEnable: true,
        zoom: 16,
        center: [116.397428, 39.90923],
        viewMode: '3D',//3D视野
        pinch: 45,
        showLabel: true,
        //features: ['bg', 'road', 'building'],
        showIndoorMap: true, //关闭室内地图
    });

(2)个性化地图皮肤

根据自己的web key,自定义好地图皮肤,将对应的styles引入即可。

/*个性化地图皮肤*/
    map.setMapStyle('amap://styles/0dec7c328b627a31575c8ec13119ea72');

(3)3D控件

  /*3D控件*/
    AMap.plugin(['AMap.ControlBar',], function () {
        map.addControl(new AMap.ControlBar());
    });

(4)信息弹窗

 var infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});
    for (var i = 0; i < lnglats.length; i++) {
        var pos = lnglats[i].point;
        var id = lnglats[i].id;
        var vvvccc = pos[0] + ',' + pos[1];
        var vvv = vvvccc.split(",");
        var vcvcx0 = parseFloat(vvv[0]);
        var vcvcx1 = parseFloat(vvv[1]);
        vvv[0] = parseFloat(vcvcx0);
        vvv[1] = parseFloat(vcvcx1);
        var marker = new AMap.Marker({
            position: vvv,
            map: map
        });
        marker.content = "<p class='cardsBg'></p>";
        marker.on('click', markerClick);
        //marker.emit('click', {target: marker});
        var text = new AMap.Text({
            text: ' ',
            textAlign: 'center',
            verticalAlign: 'middle', //middle 、bottom
            draggable: true,
            cursor: 'pointer',
            angle: 10,
            style: {
                'width': '15px',
                'height': '15px',
                'border-radius': '50%',
                'border-width': 0,
                'text-align': 'center',
                'font-size': '24px',
                'color': 'blue',
                'background-color': lnglats[i].color,
                'animation': lnglats[i].animations + ' 1s infinite',
            },
            position: vvv,//lnglats[i].point,
        })
        text.setMap(this.map);
    }
    //弹出窗口;
    function markerClick(e) {
        infoWindow.setContent(e.target.content);
        infoWindow.open(map, e.target.getPosition());
    }
    map.setFitView();

(5)涟漪动画

在高德地图中,将标注选用new AMap.Text格式,采用赋值样式,加载animation动画实现。

  style: {
                'width': '15px',
                'height': '15px',
                'border-radius': '50%',
                'border-width': 0,
                'text-align': 'center',
                'font-size': '24px',
                'color': 'blue',
                'background-color': lnglats[i].color,
                'animation': lnglats[i].animations + ' 1s infinite',
            }


总结



最终呈现动图。

在开发过程中,涟漪动画的实现,自定义富文本弹窗,是重点和难点,除了对高德地图样例的理解和调试外,更需要结合实际的UI界面进行实现。@漏刻有时

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
数据采集 Web App开发 JavaScript
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
随着互联网的发展,网页数据抓取已成为数据分析和市场调研的关键手段。Puppeteer是一款由Google开发的无头浏览器工具,可在Node.js环境中模拟用户行为,高效抓取网页数据。本文将介绍如何利用Puppeteer的高级功能,通过设置代理IP、User-Agent和Cookies等技术,实现复杂的Web Scraping任务,并提供示例代码,展示如何使用亿牛云的爬虫代理来提高爬虫的成功率。通过合理配置这些参数,开发者可以有效规避目标网站的反爬机制,提升数据抓取效率。
194 4
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
|
1月前
|
开发框架 JavaScript 前端开发
使用 Node.js 和 Express 构建 Web 应用
【10月更文挑战第2天】使用 Node.js 和 Express 构建 Web 应用
|
1月前
|
XML JavaScript 前端开发
JavaScript控制台:提升Web开发技能的秘密武器
作为Web开发人员,掌握JavaScript控制台中的各种方法至关重要。本文介绍了22种实用的console方法,从基本的log()到高级的profile()和memory,每种方法都配有示例和说明,帮助开发者更高效地调试和记录信息。通过了解这些工具,您可以优化代码、提高开发速度,减少错误,使编码过程更加顺畅愉快。
37 1
JavaScript控制台:提升Web开发技能的秘密武器
|
20天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
19 4
|
1月前
|
设计模式 JavaScript 前端开发
浅谈JavaScript 框架在现代 Web 开发中的作用
浅谈JavaScript 框架在现代 Web 开发中的作用
38 12
|
1月前
|
存储 JavaScript 前端开发
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
18 1
|
1月前
|
JavaScript 前端开发 网络架构
如何使用Vue.js构建响应式Web应用
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用
|
1月前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
2月前
|
数据采集 存储 JavaScript
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
在现代Web开发中,数据采集尤为重要,尤其在财经领域。本文以“东财股吧”为例,介绍如何使用Puppeteer结合代理IP技术进行高效的数据抓取。Puppeteer是一个强大的Node.js库,支持无头浏览器操作,适用于复杂的数据采集任务。通过设置代理IP、User-Agent及Cookies,可显著提升抓取成功率与效率,并以示例代码展示具体实现过程,为数据分析提供有力支持。
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
|
1月前
|
存储 搜索推荐 数据库
运用LangChain赋能企业规章制度制定:深入解析Retrieval-Augmented Generation(RAG)技术如何革新内部管理文件起草流程,实现高效合规与个性化定制的完美结合——实战指南与代码示例全面呈现
【10月更文挑战第3天】构建公司规章制度时,需融合业务实际与管理理论,制定合规且促发展的规则体系。尤其在数字化转型背景下,利用LangChain框架中的RAG技术,可提升规章制定效率与质量。通过Chroma向量数据库存储规章制度文本,并使用OpenAI Embeddings处理文本向量化,将现有文档转换后插入数据库。基于此,构建RAG生成器,根据输入问题检索信息并生成规章制度草案,加快更新速度并确保内容准确,灵活应对法律与业务变化,提高管理效率。此方法结合了先进的人工智能技术,展现了未来规章制度制定的新方向。
34 3

推荐镜像

更多