关键词:
1.环境准备
1)下载leaflet.js插件, 官网传送:http://leafletjs.com/
2)下载esri-leaflet.js插件, 官网传送:http://esri.github.io/esri-leaflet/
3)下载heatmap.js插件, 官网传送:https://www.patrick-wied.at/static/heatmapjs/
也可以直接在此下载,所有插件已压缩打包 https://files.cnblogs.com/files/mengjiaxing/lib.zip
2.demo样例
1)在html文件中引入所有需要用到的插件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>heatmap</title> <link rel="stylesheet" href="lib/leaflet/leaflet.css"> <script src="lib/leaflet/leaflet.js"></script> <script src="lib/proj4-compressed.js"></script> <script src="lib/proj4leaflet.js"></script> <script src="lib/heatmap/heatmap.js"></script> <script src="lib/heatmap/leaflet-heatmap.js"></script> <script src="lib/leaflet/esri-leaflet.js"></script> </head> <body>
<div id="map" style="height: 900px;width: 900px;"></div>
</body> </html>
2)加载arcgis切片服务
第一步:打开需要加载的服务,记下红线中的数据
第二步:将不同等级的Resolution拷下来放进数组里面
var res=[ 0.703125, // Level 0 0.3515625, // Level 1 0.17578125, // Level 2 0.087890625, // Level 3 0.0439453125, // Level 4 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4, 3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5, 2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6, 1.341104507446289E-6 ];
第三步:进入http://spatialreference.org/ref/sr-org/ 搜索你的空间参考系,找到相应的参考系,点击去,点击Proj4得到字符串
第四步:生成坐标参考系
var crs = new L.Proj.CRS('你的参考系', '第三步得到的字符串', { resolutions: 第二步得到的res, origin:第一步记下的origin值, }); 例如: var crs = new L.Proj.CRS('SR-ORG:7408', '+proj=longlat +ellps=GRS80 +no_defs', { resolutions: res, origin: [-180,90], });
第五步:生成地图
baselayer = L.esri.tiledMapLayer( {url: "http://192.168.1.156:6080/arcgis/rest/services/vec2/MapServer/"}); var res=[ 0.703125, // Level 0 0.3515625, // Level 1 0.17578125, // Level 2 0.087890625, // Level 3 0.0439453125, // Level 4 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4, 3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5, 2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6, 1.341104507446289E-6 ]; var crs = new L.Proj.CRS('SR-ORG:7408', '+proj=longlat +ellps=GRS80 +no_defs', { resolutions: res, origin: [-180,90], }); L.map('map', { center: new L.LatLng(26.565052,106.691417), zoom: 10, crs: crs, layers: [baselayer] });
第六步:生成地图渲染数据
var data={"max":108,"data":[{"x":104.54040688300006,"y":24.79143100700003,"value":83},{"x":104.81660000100004,"y":24.804038889000026,"value":98},.....] //数据过多只粘贴一部分
第七步:生成渲染函数
function rendererHeatMap(data){ var cfg = { "radius": 0.04, "maxOpacity": .8, "scaleRadius": true, "useLocalExtrema": true, latField: 'y', lngField: 'x', valueField: 'value' }; heatmapLayer = new HeatmapOverlay(cfg); map.addLayer(heatmapLayer); heatmapLayer.setData(data); }
第八步:调用渲染生成热力图
rendererHeatMap(data);
第九步:结果截图
项目结构:
完整代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>heatmap</title> <link rel="stylesheet" href="lib/leaflet/leaflet.css"> <script src="lib/leaflet/leaflet.js"></script> <script src="lib/proj4-compressed.js"></script> <script src="lib/proj4leaflet.js"></script> <script src="lib/heatmap/heatmap.js"></script> <script src="lib/heatmap/leaflet-heatmap.js"></script> <script src="lib/leaflet/esri-leaflet.js"></script> </head> <body> <div id="map" style="height: 900px;width: 900px;"></div> <script> baselayer = L.esri.tiledMapLayer( {url: "http://localhost:6080/arcgis/rest/services/vec2/MapServer/"}); var res=[ 0.703125, // Level 0 0.3515625, // Level 1 0.17578125, // Level 2 0.087890625, // Level 3 0.0439453125, // Level 4 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4, 3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5, 2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6, 1.341104507446289E-6 ]; var crs = new L.Proj.CRS('SR-ORG:7408', '+proj=longlat +ellps=GRS80 +no_defs', { resolutions: res, origin: [-180,90], }); map=L.map('map', { center: new L.LatLng(26.565052,106.691417), zoom: 7, crs: crs, layers: [baselayer] }); var data={"max":108,"data":[{"x":104.54040688300006,"y":24.79143100700003,"value":83},.....]; //数据过多只粘贴一部分 function rendererHeatMap(data){ var cfg = { "radius": 0.2, "maxOpacity": .8, "scaleRadius": true, "useLocalExtrema": true, latField: 'y', lngField: 'x', valueField: 'value' }; heatmapLayer = new HeatmapOverlay(cfg); map.addLayer(heatmapLayer); heatmapLayer.setData(data); } rendererHeatMap(data); </script> </body> </html>
esri-leaflet入门教程-自定义底图
esri-leaflet入门教程(3)-自定义底图by李远祥 在前面的篇章我们已经了解到了怎么样使用FlatUI、leaflet和esri-leaflet去搭建简单的地图应用界面了。如果有着手写代码的朋友可能已经发现第一个HelloWorld程序,使... 查看详情
Esri-Leaflet - 远距离搜索
】Esri-Leaflet-远距离搜索【英文标题】:Esri-Leaflet-Searchwithinadistance【发布时间】:2021-03-1615:45:52【问题描述】:我需要使用存储在ArcGISOnline中的要素图层来设计应用程序。使用地理编码器/搜索,我需要能够输入地址并选择距离(... 查看详情
esri-leaflet入门教程-动态要素加载
esri-leaflet入门教程(5)- 动态绘制图形by李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGISServer提供的各种服务,这些都是服务本身来决定的,API脚本只是非常简单的调用。但如果要做一列的地图... 查看详情
esri-leaflet入门教程-加载各类图层
esri-leaflet入门教程(4)-加载各类图层by李远祥 在leaflet中图层一般分为底图(Basemap)和叠加图层(Overlay)。前面章节已经介绍过底图其实也是实现了TileLayer接口,而其他的叠加图层要么就是叠加的业务图层,要么... 查看详情
esri-leaflet入门教程-动态绘制图形
esri-leaflet入门教程(5)-动态绘制图形by李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGISServer提供的各种服务,这些都是服务本身来决定的,API脚本只是非常简单的调用。但如果要做一列的地图交互操... 查看详情
leaflet绘制热力图
时下用的最多的开源二维webgis引擎应该是openlayers与leaflet了,leaflet因其轻量、灵活性得到了越来越多的应用。并且leaflet的插件也非常多,综合使用的话,可以很容易的实现数据的可视化分析与应用1、leaflet-heat插件leaf... 查看详情
gisvueesri-leaflet(代码片段)
1、npminstallesri-leaflet--save2、引入包importLeafletfrom"leaflet";varesri=require("esri-leaflet"); 3、添加底图esri.basemapLayer("Topographic").addTo(this.map); 4、添加动态服务 esri.dynamicMapLayer(url:"https://services.arcgisonline.com/arcgis/rest/services/Specialty/... 查看详情
WIX - Heat.exe - Heat.exe 是不是支持多种多收获类型
】WIX-Heat.exe-Heat.exe是不是支持多种多收获类型【英文标题】:WIX-Heat.exe-DoesHeat.exesupportmultiplemultipleharvesttypeWIX-Heat.exe-Heat.exe是否支持多种多收获类型【发布时间】:2016-09-0903:35:38【问题描述】:我想使用Heat.exe命令构建一个WIX文... 查看详情
heat应用
作为OpenStack中的编排引擎,Heat能够出色的完成编排任务,井井有条地管理编排出来的资源。但同时,Heat也是一个出色的应用部署引擎,它提供了一套内置的框架去完成一系列复杂的应用部署任务。使用Heat来部署应... 查看详情
openlayer3+postgis+geoserver搭建简单gis服务框架问题探究
...来进行开发,简单的分析查询会采用官方api或者leaflet,esri-leaflet等进行开发,复杂的查询分析统计功能会利用Geoprocessor(简称GP)来进行操作,采用这种商业平台好处显而易见是开发效率很大的提升,因为在这么多年的发展过程中... 查看详情
heat模板
Heat目前支持两种格式的模板,一种是基于JSON格式的CFN模板;另外一种是基于YAML格式的HOT模板。CFN模板主要是为了保持对AWS的兼容性。HOT模板是Heat自有的,资源类型更加丰富,更能体现出Heat特点的模板。一个典型的HOT模板由下... 查看详情
heat入门第一步
Heat类似于AWS的CloudFormation,是OpenStackOrchestration进程的一个项目,OpenStackOrchestration旨在创建一个人性化的服务去管理整个云架构,服务和应用的生命周期。heat实现了一种自动化的通过简单定义和配置就能实现的云部署方式... 查看详情
heat创建stack
1.使用模板创建虚拟机heat_template_version:2018-09-04description:Simpletemplatetodeployavirtualmachine.resources:my_hello_vm:#资源名type:OS::Nova::Server#nova方法properties:image:cirros#镜像名flavor:m1.small#flavor名net 查看详情
多实例的heat模板(代码片段)
一、heat编排 heat编排简单来讲,就是替代人工自动选择OpenStack自身基础架构资源,包括计算、网络和存储等资源。通过编排这些资源,用户可以得到最基本的VM。二、heat模板 目前heat支持两种格式的... 查看详情
如何包含由 Heat 创建的 Wix Fragments
】如何包含由Heat创建的WixFragments【英文标题】:HowtoincludeWixFragmentscreatedbyHeat【发布时间】:2010-11-1609:53:28【问题描述】:我有以下片段:<?xmlversion="1.0"encoding="utf-8"?><Wixxmlns="http://schemas.microsoft.com/wix/2006/wi"><Fragmen 查看详情
packstack安装openstackqueens版本:在horizon里没有heat的编排目录
原因:beforequeensheatwasinsidehorizoncode,inqueensandlater,heatdashboardisinadifferentpackageandneedtobeinstalled,packagename:openstack-heat-ui 解决办法是:yuminstall-yopenstack-heat-ui 重启服务:systemctl restartopenstack-heat*systemctlrestarthttpd 查看详情
heat-autoscaling
在openstack的I版本号中,Heat中加入了对于AutoScaling资源的支持,github上也提供了相应的AutoScaling的模板,同一时候也支持使用ceilometer的alarm来触发ScalingPolicy。AutoScaling定义的流程首先定义一个AutoScalingGroup,该Group定义了能够持有资源... 查看详情
Wix、Heat 和 Wxi 文件
】Wix、Heat和Wxi文件【英文标题】:Wix,HeatandWxiFile【发布时间】:2009-10-2106:39:02【问题描述】:我正在使用heat.exe生成文件列表,我需要替换File/@Source="SourceDir"所以我传递-var和目录名称,但这些变量是在我的.wxi文件中定义的如何... 查看详情