SuperMap iClient for JavaScript提供了热点图(HeatMapLayer),用于渲染数据衰减趋势、颜色渐变的效果。
首先创建一个热点图对象。由于热点图是对矢量点数据的渲染,不能作为底图,初始化只需要设置一个图层的名称即可。
//创建一个名为“heatMap”的热点图层。
heatMapLayer = new SuperMap.Layer.HeatMapLayer("heatMap");
        
    
    然后将此图层添加到map里面。
//向map中添加图层
map.addLayers([heatMapLayer]);
        
    
    首先需要获取一个点数组(SuperMap.Feature.Vector数组), 数据可以从服务器查询,也可以使用本地数据,不过都只能是点数据。 如下的形式:
var heatFeatures = [feature1,feature2,......,featureN];
        
    
    这些features首先必须是点数据,每一个 feature 必须满足在attributes属性中存在记录权重的值。 如我们可以这样初始化feature:
var heatFeature = new SuperMap.Feature.Vector(
     new SuperMap.Geometry.Point(
                    Math.random()*360 - 180,
                    Math.random()*180 - 90
            ),
            {
                "value":Math.random()*9
            }
    );
        
    
    这里的value就是记录权重的字段,当每一个feature数据带上权重数据后, 我们还需要让layer知道如何读取这些数据,所以需要告诉layer读哪一个字段:
heatMapLayer.featureWeight = "value";
        
    
    再把所有的features添加进layer
heatMapLayer.addFeatures(heatFeatures);
        
    
    然后我们就可以获得如下热点图的效果了:

虽然上面的效果很好,但是颜色渐变是固定的,下面我们就试着自己来设置颜色的渐变
我们可以给属性items赋值一个分段颜色数组以此来设置颜色渐变。如下:
            var items = [
                {
                    start:0,
                    end:1,
                    startColor:new  SuperMap.REST.ServerColor(170,240,233),
                    endColor:new  SuperMap.REST.ServerColor(180,245,185)
                },
                {
                    start:1,
                    end:2,
                    startColor:new  SuperMap.REST.ServerColor(180,245,185),
                    endColor:new  SuperMap.REST.ServerColor(223,250,177)
                },
                {
                    start:2,
                    end:3,
                    startColor:new  SuperMap.REST.ServerColor(223,250,177),
                    endColor:new  SuperMap.REST.ServerColor(224,239,152)
                },
                {
                    start:3,
                    end:4,
                    startColor:new  SuperMap.REST.ServerColor(224,239,152),
                    endColor:new  SuperMap.REST.ServerColor(160,213,103)
                },
                {
                    start:4,
                    end:5,
                    startColor:new  SuperMap.REST.ServerColor(160,213,103),
                    endColor:new  SuperMap.REST.ServerColor(44,104,50)
                },
                {
                    start:5,
                    end:6,
                    startColor:new  SuperMap.REST.ServerColor(44,104,50),
                    endColor:new  SuperMap.REST.ServerColor(29,135,59)
                },
                {
                    start:6,
                    end:7,
                    startColor:new  SuperMap.REST.ServerColor(29,135,59),
                    endColor:new  SuperMap.REST.ServerColor(118,154,49)
                },
                {
                    start:7,
                    end:8,
                    startColor:new  SuperMap.REST.ServerColor(118,154,49),
                    endColor:new  SuperMap.REST.ServerColor(204,175,27)
                },
                {
                    start:8,
                    end:9,
                    startColor:new  SuperMap.REST.ServerColor(204,175,27),
                    endColor:new  SuperMap.REST.ServerColor(198,63,2)
                }
            ];
            heatMapLayer.items = items;
        
    
    这样我们就实现了自己的颜色渐变:

这样我们就可以使用热点图功能了,完整范例请见 示范程序->可视化->可视化图层->热点图。