本文主要是介绍ArcGIS JS API热力图(通过Graphic,不使用要素地图服务),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ArcGIS JS API里面有一个render类是HeatmapRenderer,FeatureLayer类有个setRender(render)方法,一般情况下是通过地图服务获取数据创建FeatureLayer,其实也可以“避开”地图服务,通过代码往FeatureLayer里面添加数据渲染热力图,其实添加的数据就是graphic。
1、创建FeatureLayer的定义(layerDefinition )(创建字段)。
var layerDefinition = {"geometryType": "esriGeometryPoint","fields": [{"name": "xxx", //字段名称xxx"type": "esriFieldTypeInteger" //字段数据类型} //可以在数组里添加多个字段]};
2、通过layerDefinition 创建featureCollection。
var featureCollection = {"layerDefinition": layerDefinition,"featureSet": {"features": null,"geometryType": "esriGeometryPoint" //FeatureLayer只能添加一种geometry,GraphicsLayer可以添加多种}};
3、通过featureCollection创建FeatureLayer,添加到地图上。
var heatMapLayer = new FeatureLayer(featureCollection, {mode: FeatureLayer.MODE_SNAPSHOT,outFields: ["*"],opacity: 1});heatMapLayer['id'] = "heatMap";map.addLayer(heatMapLayer);
4、创建HeatmapRender渲染器
var heatmapRenderer = new HeatmapRenderer({ colorStops: [ // 根据实际需要设置colorStops{ ratio: 0, color: "rgba(0, 0, 255,0)" },{ ratio: 0.5, color: "rgb(0, 0, 255)" },{ ratio: 0.7, color: "rgb(255, 0, 255)" },{ ratio: 0.9, color: "rgb(255, 0, 0)" }],blurRadius: 8,maxPixelIntensity: 100,minPixelIntensity: 0,});
5、往3中定义的heatMapLayer上添加数据
for (var i = 0; i < arr.length; i++) {var x = parseFloat(arr[i].x);var y = parseFloat(arr[i].y); //arr是自定义的数据数组var point = new Point(x, y, map.spatialReference);//xxx是在layerDefinition中定义的属性名称,g不需要定义symbolvar g = new Graphic(point, null, { xxx: i }, null); heatMapLayer.add(g);
}
6、heatMapLayer设置渲染器
heatMapLayer.setRenderer(heatmapRenderer);
7、设置渲染器 前后地图对比
8、完整代码demo下载地址:
https://download.csdn.net/download/shijie_nihao/11173262
这篇关于ArcGIS JS API热力图(通过Graphic,不使用要素地图服务)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!