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

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

时间:2023-01-28 11:32:21浏览次数:39  
标签:控件 map lnglats 地图 AMap var 高德 3D


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

文章目录

  • ​​高德地图开发系列文章目录​​
  • ​​前言​​
  • ​​一、项目说明​​
  • ​​二、核心代码开发​​
  • ​​1.引入库​​
  • ​​2.构建DOM容器​​
  • ​​3.高德地图开发​​
  • ​​(1)初始化地图​​
  • ​​(2)个性化地图皮肤​​
  • ​​(3)3D控件​​
  • ​​(4)信息弹窗​​
  • ​​(5)涟漪动画​​
  • ​​总结​​

前言

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


一、项目说明

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

  • 设备自带网络传输功能,可实时将当前位置的经纬度传送是数据库;但采集的经纬度信息为wgs84标准,在大屏读取时,需要转换为高德的火星系坐标;
  • 标注需要分类:告警状态和正常执行状态,采用涟漪动画效果实现;
  • 单击标注需要实现自定义富文本弹窗;

大屏界面UI设计图如下:

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

二、核心代码开发

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',
}

总结

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


最终呈现动图。

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


标签:控件,map,lnglats,地图,AMap,var,高德,3D
From: https://blog.51cto.com/lockdatav/6024882

相关文章

  • 南洋理工最新工作:3D语义点云全局描述子,解决大场景下3D LiDAR位置识别
    以下内容来自从零开始机器人SLAM知识星球每日更新内容点击领取学习资料→机器人SLAM学习资料大礼包论文#SectionKey:3-DSemanticPointCloudDescriptorforPlac......
  • 3D数字孪生场景编辑器介绍
    1、背景数字孪生的建设流程涉及建模、美术、程序、仿真等多种人才的协同作业,人力要求高,实施成本高,建设周期长。如何让小型团队甚至一个人就可以完成数字孪生的开发,是数字......
  • Android高级控件之下拉框和几种适配器
    7.1下拉框首先介绍下拉框在xml文件中的两种表达形式,再介绍在代码中的两种写法在xml文件中,下拉框控件Spinner的写法如下所示:<Spinner android:id="@id/sp_XXX"  ......
  • WPF-3D图形
    WPF-3D图形WPF的3D功能可以在不编写任何c#代码的情况下进行绘制,只需要使用xaml即可完成3D图形的渲染。本文主要讲述了WPF-3D中的关键概念,以及常用到的命中测试、2d控件如......
  • Repeater控件分列显示
     今天有学生问如何用Repeater控件进行分列显示,以前进行分列显示时,要么完全自定义输出,要么使用DataList控件,可就是没有用过Repeater控件,又懒得动脑了,从网上搜了一下,得到如下......
  • 百度地图提示JS API版本过低
    当网站遇到调用百度地图页面时,提示“JSAPI版本过低”jsapi版本过低解决方法:在https://lbsyun.baidu.com/注册用户,在应用管理,创建应用应用类型:浏览器端(推荐全......
  • 解决C#用BindingSource控件绑定数据源时产生的错误
    今天在VS2008中用BindingSource控件绑定SQL2005数据库时出现了一个错误,提示信息如下:错误信息:未能从程序集Microsoft.VisualStudio.DataDesign.SyncDesigner.DslPackage,V......
  • Substitution 控件学习
    Substitution控件用在配置为需要进行缓存的ASP.NET网页上。Substitution 动态更新缓存页的部分 缓存某个ASP.NET页时,默认情况下会缓存该页的全部输出。在第一次请求......
  • 游戏开发之旅 3D数学学习 (1) 四元数的运用
    为什么要用四元数?首先,在一般的游戏引擎中,通常会以欧拉角作为物体旋转的参考或者操作物体旋转的手段。但是,众所周知,欧拉角虽然简单易懂,易于操作。但是,使用欧拉角进行游戏编......
  • 使用栅格地图复现Floyd算法
    Floyd算法适用于APSP(AllPairsShortestPaths,多源最短路径),是一种动态规划算法,稠密图效果最佳,边权可正可负。此算法简单有效,由于三重循环结构紧凑,对于稠密图,效率要高于Di......