ThingJS:如何高效开发热力图,和甲方更加亲密?

简介: 热力图实际上它等同于我们常说的密度图,ThingJS让你高效开发热力图,和甲方更加亲密。

热力图实际上它等同于我们常说的密度图,ThingJS让你高效开发热力图,和甲方更加亲密。

热力图是地理位置可视化的一种表现方式,能够使得比平均发生概率更高的区域能够浮现出来,例如高犯罪区、高交通事故区、高仓库区域。

百度地图和高德地图的JavaScript API都提供了热力图的绘制方法,都是将热力图作为新的图层,叠加到地图上。注意热力图数据源的格式与FeatureLayer(要素图层)相同,都是json数据格式。

首先引用地图组件脚本,创建TileLayer并作为图块图层添加到地图。TileLayer是ThingJS API公开的缓存地图服务,平铺的图层被缓存后,渲染速度更快,发布后使用提供的url地址就可以在代码中调用并在地图上显示和编辑。

// 引用地图组件脚本
THING.Utils.dynamicLoad(['https://www.thingjs.com/uearth/uearth.min.js'], function () {

  var map = app.create({
    type: 'Map',
    style: {
      night: false
    },
    attribution: 'Google'
  });
  var tileLayer1 = app.create({
    type: 'TileLayer',
    id: 'tileLayer1',
    url: 'http://mt0.google.cn/vt/lyrs=s&x={x}&y={y}&z={z}'
  });
  map.baseLayers.add(tileLayer1);

接下来就设置今天的主角“热力图”,官方图层命名HeatMayLayer.
1.jpg

实现原理

热力图实现过程就是通过简单的数学变化,将离散的点信息映射到最终图像上的过程。从地图上看热力图,都是一个个离散点信息,引入地图组件脚本map,作为最终热力图像产生影响的区域。
将所有离散点Map进行叠加,产生一幅灰度图像。离散点密度越高的地方,灰度图中像素点数值越高,即图像越亮。valueField代表用来生成热力图使用的权重字段,不传的话所有点的权重相同,如果传,则从数据的properties中读取该字段的值作为权重值。
最后将生成的灰度图映射到彩色图像上,官方映射关系设置如下:

官方示例(部分)如下:

   $.ajax({
     type: 'GET',
     url: 'https://www.thingjs.com/uearth/res/beijing-POIs-3211.geojson',
     dataType: 'json',
     success: function (data) {
       app.camera.earthFlyTo({
         time: 2000,
         lonlat: [116.44474497103292, 39.9118522313402],
         height: 5000,
         pitch:80,
         complete: function () {
           var layer = app.create({
             type: 'HeatMapLayer',
             dataSource: data, //数据源 geojson格式
             valueField: config.valueField, //权重字段
             needsUpdate: config.needsUpdate, //是否随相机的变化重新绘制热力图
             renderer: {
               radius: config.radius, // 影响半径
               minOpacity: config.minOpacity,//最小值的透明度
               maxOpacity: config.maxOpacity,//最大值的透明度
               mosaic: config.mosaic,//是否使用马赛克效果
               mosaicSize: config.mosaicSize,//马赛克效果的像素值
               gradient: gradientObj[config.gradient] //色带
             },
           });
           map.addLayer(layer);
         }
       });
     }
   });
 }
});

ThingJS让你的项目成本更低、3D功能更丰富!

相关文章
|
存储 关系型数据库 MySQL
什么是联合索引
【10月更文挑战第15天】什么是联合索引
1344 4
|
机器学习/深度学习 人工智能 监控
如何利用AI实现银行存量客户的营销?
金融行业是当今大数据、人工智能应用最广、最深的领域之一。随着数据仓库和数据科学的发展,以银行为代表的金融行业企业拥有了海量数据,应运而生了金融领域的大数据分析、智能营销等大数据和人工智能的应用。其中针对存量客户的智能营销成为银行业的一项重要策略。
|
XML 前端开发 Java
Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)
Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)
1155 0
|
存储 小程序 容器
如何制作一个微信答题小程序?
如何制作一个微信答题小程序?
988 0
|
SQL Java 数据库连接
解决mybatis-plus 拦截器不生效--分页插件不生效
本文介绍了在使用 Mybatis-Plus 进行分页查询时遇到的问题及解决方法。依赖包包括 `mybatis-plus-boot-starter`、`mybatis-plus-extension` 等,并给出了正确的分页配置和代码示例。当分页功能失效时,需将 Mybatis-Plus 版本改为 3.5.5 并正确配置拦截器。
5888 6
解决mybatis-plus 拦截器不生效--分页插件不生效
阿里云服务器发票开具流程_发票抬头_发票常见问题解答FAQ
在阿里云开具发票,需登录用户中心访问发票管理页面。首次开票时设置发票抬头(个人/企业/事业单位),选择发票类型(增值税普通/专用)。随后选择需开票的订单并按提示操作。个人账号不可直接开企业发票,需变更实名认证。发票税率一般为6%,硬件为13%。发票抬头可修改,纸质发票邮费视情况由阿里云或用户承担,电子发票具同等法律效力且可报销。更多详情见阿里云帮助文档。
1770 9
|
关系型数据库 MySQL
MySQL 8.0 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded 原因及解决办法
MySQL 8.0 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded 原因及解决办法
754 1
|
小程序
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
这篇文章详细介绍了作者开发的微信小程序购物商城系统,包括功能列表、项目结构、具体页面展示和部分源码,涵盖了从首页、商品分类、商品列表、商品详情、购物车、支付、订单查询、个人中心到商品收藏和意见反馈等多个页面的实现效果和业务需求描述。
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
|
Java Maven 开发者
"揭秘IDEA的神奇助手:Maven Helper插件,让你轻松驾驭复杂依赖,告别冲突噩梦!"
【8月更文挑战第20天】Maven Helper是一款提升Java开发者工作效率的IDEA插件,它能直观展示项目依赖关系并协助管理。主要功能包括依赖树视图、冲突检测与解决及依赖排除。安装简便,重启IDEA后即用。借助其“Dependencies”面板,开发者可以清晰了解依赖详情,快速定位并解决冲突问题,有效优化项目结构,提升开发效率。
1782 0
|
自然语言处理 小程序 PHP
分享66个PHP源码,总有一款适合您
分享66个PHP源码,总有一款适合您
414 0