SuperMap.Layer

图层类。

Summary
SuperMap.Layer 图层类。
Properties
alwaysInRange {Boolean} 当前地图显示的分辨率在图层的最大最小分辨率范围内,如果图层以非比例尺显示,此变量设置为true。
div {DOMElement}存放图层的界面元素div,默认为null。
id {String}图层id,唯一标识图层,默认为null,在初始化时会动态创建唯一的值
name {String}图层名称,默认为null。初始化图层时可以外部传参进行修改, 可以通过图层管理器(LayerSwitcher)查看当前所有图层的名称。
Constants
EVENT_TYPES {Array(String)} 支持事件的类型,注册监听事件方法如下所示:
RESOLUTION_PROPERTIES {Array} resolutions 计算使用的属性数组,这些属性包括:scales、resolutions、maxScale、minScale maxResolution、minResolution、numZoomLevels、maxZoomLevel。
Properties
displayInLayerSwitcher {Boolean} 是否在图层管理器(LayerSwitcher)中显示图层名字,默认为 true。
displayOutsideMaxExtent {Boolean} 判断请求地图瓦片是否完全超出了当前图层的最大范围, 默认为false。
eventListeners {Object} 监听器对象,在构造函数中设置此参数。通过 SuperMap.Events.on 注册。
events {SuperMap.Events}
gutter {Integer} 瓦片间的交接间距(像素),默认为0。
isBaseLayer {Boolean} 当前图层是否为基础层,默认为false。需在子类中单独设置此属性。
map {SuperMap.Map} 图层所关联的地图,默认为null。当图层添加到地图上时设置此变量。
maxExtent {SuperMap.Bounds} 在图层实例化的时候设置图层的最大范围,平移过程中边界中心点不会偏离可视窗口。 不同的投影下范围不同,如world在“EPSG:4326”下一般为左下: ( -180.0 , -90.0 ),右上: ( 180.0 , 90.0 ) 而在“EPSG:3857”下为左下: ( -20037508.34 , -25776731.36 ),右上: ( 20037508.34 , 25776731.36 )
maxResolution {Float} 在图层实例化的时候设置图层最大的分辨率,默认最大的是360度/256像素(投影为4326),相当于缩放级别为0级。 不同的投影下maxResolution会不同,内部会进行计算。
maxScale {Float}在图层实例化的时候设置最大比例尺,在不同的投影下根据maxResolution计算
minExtent {SuperMap.Bounds}在图层实例化的时候设置图层最小范围。
minResolution {Float}在图层实例化的时候设置图层最小分辨率,默认最小的是360度/(256*16)像素(投影为4326),相当于缩放级别为16级。 不同的投影下minResolution会不同,内部会进行计算。
minScale {Float}在图层实例化的时候设置最小比例尺,在不同的投影下根据minResolution计算
numZoomLevels {Integer}在图层实例化的时候设置缩放级别,一般为16。
projection {SuperMap.Projection} or {String} 地图投影,默认为null。创建图层时, 在图层的 options 上可以设置当前图层默认的投影字符串,如“EPSG:4326” 还需要设置 maxExtent、maxResolution、units 。
resolutions {Array} 降序排列的地图分辨率列表。如果在创建layer时没有设置resolutions,则需要计算, 此时需设置resolution计算相关的属性(maxExtent,maxResolution, maxScale等)。
scales {Array} 降序排列的比例尺数组,默认为null。一般会通过resolutions来自动计算, 也可以在图层初始化的时候设置。
units {String} 地图单位,可以为 ‘degrees’ (or ‘dd’), ‘m’, ‘ft’, ‘km’, ‘mi’, ‘inches’,默认为 ‘degrees’。
visibility {Boolean} 图层是否可见,默认为 true。
wrapDateLine {Boolean} 在底图图层的最大范围等于世界范围情况时,当底图图层平移到日期变更线外边后是否仍然继续循环显示。当为false时不显示,默认为false
Constructor
SuperMap.Layer
Functions
addOptions 通过新的Options覆盖以前的Options参数。 Parameters: newOptions - {Object}新的Options参数。 reinitialize - {Boolean} 如果设为 true,并且当前的 baseLayer 的 resolution 发生变化, 则 map 需要重新定位有效的 resolution ,并且触发 changebaselayer 事件。
calculateInRange 计算当前地图显示的分辨率是否在图层的最大最小分辨率范围内 Returns: {Boolean} 图层以当前地图分辨率显示,如果’alwaysInRange’ 设置为true,则此函数返回true。
display 临时隐藏或者显示图层。通过对CSS控制产生即时效果,重新渲染失效。 一般用 setVisibility 方法来动态控制图层的显示和隐藏。
getExtent 获得边界范围。
getImageSize 获取瓦片的大小。 Parameters: bounds - {SuperMap.Bounds} 瓦片的边界选项。可以被子类用来处理图层上不同瓦片的边缘范围(例如:Zoomify)。
getLonLatFromViewPortPx 根据指定的像素点位置返回经纬度坐标。 Parameters: viewPortPx - {SuperMap.Pixel}传入的像素点。
getResolution 获得当前图层分辨率。
getResolutionForZoom 根据指定的缩放级别返回对应的分辨率。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。
getScaleForZoom 通过指定的缩放级别返回对应的比例尺。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。
getViewPortPxFromLonLat 根据指定的纬度坐标返回像素点位置。 Parameters: lonlat - {SuperMap.LonLat}经纬度。
getVisibility 获取当前图层可见性。 Returns: {Boolean} 是否可见(当前地图的resolution在最大最小resolution之间)。
getZoomForExtent 获得当前的缩放级别。 Parameters: extent - {SuperMap.Bounds} closest - {Boolean} 查找最接近指定范围边界的缩放级别。 默认为false.
getZoomForResolution 根据指定的分辨率返回对应的缩放级别。 Parameters: resolution - {Float} 分辨率大小。 closest - {Boolean} 查找当前显示的分辨率对应的缩放级别,默认为false。
onMapResize 此函数在子类中复写实现。
redraw 重新绘制图层,对于图片图层,该方法销毁掉该图层的div以及地图图片,然后重新组织div,重新请求地图图片。如果图层被重绘返回true,否则返回false。在子图层控制时,修改图层信息后,调用该方法重新绘制图层显示改变后的效果。该方法不适用于覆盖物图层,例如SuperMap.Layer.Markers。
removeMap 从地图中移除图层。
setIsBaseLayer 设置当前图层性质(底图或普通图层),一旦图层性质改变会触发changebaselayer事件。 Parameters: isBaseLayer - {Boolean}
setName 将新的名字赋给当前图层,可以触发地图上的 changelayer 事件。
setOpacity 设置图层的不透明度,取值[0-1]之间。使用方法如:
setTileSize 设置瓦片的大小。
setVisibility 设置图层可见性,设置图层的隐藏,显示,重绘的相应的可见标记。

Properties

id

{String}图层id,唯一标识图层,默认为null,在初始化时会动态创建唯一的值

name

{String}图层名称,默认为null。初始化图层时可以外部传参进行修改, 可以通过图层管理器(LayerSwitcher)查看当前所有图层的名称。

div

{DOMElement}存放图层的界面元素div,默认为null。

alwaysInRange

{Boolean} 当前地图显示的分辨率在图层的最大最小分辨率范围内,如果图层以非比例尺显示,此变量设置为true。

Constants

EVENT_TYPES

{Array(String)} 支持事件的类型,注册监听事件方法如下所示:

layer.events.register(type, obj, listener);

所有监听对象具备如下属性

object {Object} object引用。
element {DOMElement} element引用。

支持事件类型

loadstart 当图层开始加载时触发事件。
loadend 当图层结束加载时候触发事件。
loadcancel 当图层取消加载时候触发事件。
visibilitychanged 当图层可见性发生变化时触发事件。
move 当图层移动时触发此事件(拖拽时每次鼠标移动触发此事件)。
moveend 当图层移动结束时触发此事件。
added 图层加载到map上触发此事件。
removed 图层从map上移除后触发此事件。
tileloaded 每个瓦片下载完成所触发的事件,返回该瓦片对象。
//需要将layer的bufferImgCount设置为0,并且将页面在服务端发布出来
layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", DemoURL.china, {transparent: true, cacheEnabled: true, redirect: true}, {maxResolution:"auto",bufferImgCount:0});
layer.events.on({tileloaded: function(evt) {
    var ctx = evt.tile.getCanvasContext();
    if (ctx) {
        var imgd = ctx.getImageData(0, 0, evt.tile.size.w, evt.tile.size.h);
        imgd = modify(imgd);
        ctx.putImageData(imgd, 0, 0);
        evt.tile.drawImgData(ctx.canvas.toDataURL(),evt);
    }
}});
function modify(imgPixels){
  for(var y = 0, h = imgPixels.height; y < h; y++){
      for(var x = 0, w = imgPixels.width; x < w; x++){
          var i = (y * 4) * w + x * 4;

          var gray = 0.299*imgPixels.data[i] + 0.587*imgPixels.data[i + 1] + 0.114*imgPixels.data[i + 2];
          imgPixels.data[i] = gray;
          imgPixels.data[i + 1] = gray;
          imgPixels.data[i + 2] = gray;
      }
  }
  return imgPixels;
}

RESOLUTION_PROPERTIES

{Array} resolutions 计算使用的属性数组,这些属性包括:scales、resolutions、maxScale、minScale maxResolution、minResolution、numZoomLevels、maxZoomLevel。

Properties

events

map

{SuperMap.Map} 图层所关联的地图,默认为null。当图层添加到地图上时设置此变量。

isBaseLayer

{Boolean} 当前图层是否为基础层,默认为false。需在子类中单独设置此属性。

displayInLayerSwitcher

{Boolean} 是否在图层管理器(LayerSwitcher)中显示图层名字,默认为 true。

visibility

{Boolean} 图层是否可见,默认为 true。

eventListeners

{Object} 监听器对象,在构造函数中设置此参数。通过 SuperMap.Events.on 注册。

gutter

{Integer} 瓦片间的交接间距(像素),默认为0。

projection

{SuperMap.Projection} or {String} 地图投影,默认为null。创建图层时, 在图层的 options 上可以设置当前图层默认的投影字符串,如“EPSG:4326” 还需要设置 maxExtent、maxResolution、units 。

units

{String} 地图单位,可以为 ‘degrees’ (or ‘dd’), ‘m’, ‘ft’, ‘km’, ‘mi’, ‘inches’,默认为 ‘degrees’。

scales

{Array} 降序排列的比例尺数组,默认为null。一般会通过resolutions来自动计算, 也可以在图层初始化的时候设置。

resolutions

{Array} 降序排列的地图分辨率列表。如果在创建layer时没有设置resolutions,则需要计算, 此时需设置resolution计算相关的属性(maxExtent,maxResolution, maxScale等)。

maxExtent

{SuperMap.Bounds} 在图层实例化的时候设置图层的最大范围,平移过程中边界中心点不会偏离可视窗口。 不同的投影下范围不同,如world在“EPSG:4326”下一般为左下: ( -180.0 , -90.0 ),右上: ( 180.0 , 90.0 ) 而在“EPSG:3857”下为左下: ( -20037508.34 , -25776731.36 ),右上: ( 20037508.34 , 25776731.36 )

minExtent

{SuperMap.Bounds}在图层实例化的时候设置图层最小范围。

maxResolution

{Float} 在图层实例化的时候设置图层最大的分辨率,默认最大的是360度/256像素(投影为4326),相当于缩放级别为0级。 不同的投影下maxResolution会不同,内部会进行计算。

minResolution

{Float}在图层实例化的时候设置图层最小分辨率,默认最小的是360度/(256*16)像素(投影为4326),相当于缩放级别为16级。 不同的投影下minResolution会不同,内部会进行计算。

numZoomLevels

{Integer}在图层实例化的时候设置缩放级别,一般为16。

minScale

{Float}在图层实例化的时候设置最小比例尺,在不同的投影下根据minResolution计算

maxScale

{Float}在图层实例化的时候设置最大比例尺,在不同的投影下根据maxResolution计算

displayOutsideMaxExtent

{Boolean} 判断请求地图瓦片是否完全超出了当前图层的最大范围, 默认为false。

wrapDateLine

{Boolean} 在底图图层的最大范围等于世界范围情况时,当底图图层平移到日期变更线外边后是否仍然继续循环显示。当为false时不显示,默认为false

Constructor

SuperMap.Layer

Parameters

name {String} 图层的名字。
options {Object} 该类开放的属性。

Functions

setName

setName: function( newName )

将新的名字赋给当前图层,可以触发地图上的 changelayer 事件。

Parameters

newName {String} 新的图层名字.

addOptions

addOptions: function ( newOptions,
reinitialize )

通过新的Options覆盖以前的Options参数。 Parameters: newOptions - {Object}新的Options参数。 reinitialize - {Boolean} 如果设为 true,并且当前的 baseLayer 的 resolution 发生变化, 则 map 需要重新定位有效的 resolution ,并且触发 changebaselayer 事件。

onMapResize

onMapResize: function()

此函数在子类中复写实现。

redraw

redraw: function()

重新绘制图层,对于图片图层,该方法销毁掉该图层的div以及地图图片,然后重新组织div,重新请求地图图片。如果图层被重绘返回true,否则返回false。在子图层控制时,修改图层信息后,调用该方法重新绘制图层显示改变后的效果。该方法不适用于覆盖物图层,例如SuperMap.Layer.Markers。

Returns

{Boolean} 图层是否被重绘。

removeMap

removeMap: function( map )

从地图中移除图层。

Parameters

map {SuperMap.Map}图层所在的地图。

getImageSize

getImageSize: function( bounds )

获取瓦片的大小。 Parameters: bounds - {SuperMap.Bounds} 瓦片的边界选项。可以被子类用来处理图层上不同瓦片的边缘范围(例如:Zoomify)。

Returns

{SuperMap.Size} 图像的大小。

setTileSize

setTileSize: function( size )

设置瓦片的大小。

Parameters

size {SuperMap.Size}瓦片的大小。

getVisibility

getVisibility: function()

获取当前图层可见性。 Returns: {Boolean} 是否可见(当前地图的resolution在最大最小resolution之间)。

setVisibility

setVisibility: function( visibility )

设置图层可见性,设置图层的隐藏,显示,重绘的相应的可见标记。

Parameters

visibility {Boolean} 是否显示图层(当前地图的resolution在最大最小resolution之间)。

display

display: function( display )

临时隐藏或者显示图层。通过对CSS控制产生即时效果,重新渲染失效。 一般用 setVisibility 方法来动态控制图层的显示和隐藏。

Parameters

display {Boolean}

calculateInRange

calculateInRange: function()

计算当前地图显示的分辨率是否在图层的最大最小分辨率范围内 Returns: {Boolean} 图层以当前地图分辨率显示,如果’alwaysInRange’ 设置为true,则此函数返回true。

setIsBaseLayer

setIsBaseLayer: function( isBaseLayer )

设置当前图层性质(底图或普通图层),一旦图层性质改变会触发changebaselayer事件。 Parameters: isBaseLayer - {Boolean}

getResolution

getResolution: function()

获得当前图层分辨率。

Returns

{Float} 图层分辨率,从resolution数组中根据当前地图的缩放等级获得。

getExtent

getExtent: function()

获得边界范围。

Returns

{SuperMap.Bounds} 当前视图窗口边界。

getZoomForExtent

getZoomForExtent: function( extent,
closest )

获得当前的缩放级别。 Parameters: extent - {SuperMap.Bounds} closest - {Boolean} 查找最接近指定范围边界的缩放级别。 默认为false.

Returns

{Integer} 传入的exent对应的缩放级别的索引。首先调用getSize函数获取当前地图的size, 然后利用此size和传入的exent计算理想的分辨率(idealResolution), 最后根据idealResolution和传入的closest参数调用getZoomForResolution函数获得当前的缩放级别。

getResolutionForZoom

getResolutionForZoom: function( zoom )

根据指定的缩放级别返回对应的分辨率。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。

Returns

{Float} 返回一个指定缩放级别对应的resolution。

getScaleForZoom

getScaleForZoom: function( zoom )

通过指定的缩放级别返回对应的比例尺。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。

Returns

{Float} 返回一个指定缩放级别对应的Scale。

getZoomForResolution

getZoomForResolution: function( resolution,
closest )

根据指定的分辨率返回对应的缩放级别。 Parameters: resolution - {Float} 分辨率大小。 closest - {Boolean} 查找当前显示的分辨率对应的缩放级别,默认为false。

Returns

{Integer} 返回缩放级别的下标。

getLonLatFromViewPortPx

getLonLatFromViewPortPx: function ( viewPortPx )

根据指定的像素点位置返回经纬度坐标。 Parameters: viewPortPx - {SuperMap.Pixel}传入的像素点。

Returns

{SuperMap.LonLat} 返回经纬度,此经纬度是由传入类型为 <SuperMap.Pixel>的参数viewPortPx计算得到。

getViewPortPxFromLonLat

getViewPortPxFromLonLat: function ( lonlat )

根据指定的纬度坐标返回像素点位置。 Parameters: lonlat - {SuperMap.LonLat}经纬度。

Returns

{SuperMap.Pixel} 通过与传入的<SuperMap.LonLat>类型的LonLat参数计算像素点在当前视图窗口的位置。

setOpacity

setOpacity: function( opacity )

设置图层的不透明度,取值[0-1]之间。使用方法如:

var map = new SuperMap.Map("map");
var url = "http://localhost:8090/iserver/services/map-jingjin/rest/maps
    /京津地区人口分布图_专题图";
var layerJinjing = new SuperMap.Layer.TiledDynamicRESTLayer("World",
    url, {transparent: true, cacheEnabled: true});
layerJinjing.events.on({"layerInitialized": addLayer1});
layerJinjing.setOpacity(0.2);

function addLayer1(){
    map.addLayer(layerJinjing);
    map.setCenter(new SuperMap.LonLat(0, 0),3);
}

Parameter

opacity {Float} 图层的不透明度,取值范围:[0-1]。
地图类。 用于实例化map类创建一个新地图,实现地图在客户端的交互操作,可通过给创建的map添加图层和控件来扩展应用, 在创建地图时,如果没有添加指定的控件,则默认Navigation、PanZoomBar控件。
坐标转换类。这个类封装了与 proj4js 投影对象进行交互的几种方法。
表示边界类实例。使用bounds之前需要设置left,bottom, right, top四个属性,这些属性的初始值为null。
setName: function( newName )
将新的名字赋给当前图层,可以触发地图上的 changelayer 事件。
addOptions: function ( newOptions,
reinitialize )
通过新的Options覆盖以前的Options参数。 Parameters: newOptions - {Object}新的Options参数。 reinitialize - {Boolean} 如果设为 true,并且当前的 baseLayer 的 resolution 发生变化, 则 map 需要重新定位有效的 resolution ,并且触发 changebaselayer 事件。
onMapResize: function()
此函数在子类中复写实现。
redraw: function()
重新绘制图层,对于图片图层,该方法销毁掉该图层的div以及地图图片,然后重新组织div,重新请求地图图片。如果图层被重绘返回true,否则返回false。在子图层控制时,修改图层信息后,调用该方法重新绘制图层显示改变后的效果。该方法不适用于覆盖物图层,例如SuperMap.Layer.Markers。
removeMap: function( map )
从地图中移除图层。
getImageSize: function( bounds )
获取瓦片的大小。 Parameters: bounds - {SuperMap.Bounds} 瓦片的边界选项。可以被子类用来处理图层上不同瓦片的边缘范围(例如:Zoomify)。
setTileSize: function( size )
设置瓦片的大小。
getVisibility: function()
获取当前图层可见性。 Returns: {Boolean} 是否可见(当前地图的resolution在最大最小resolution之间)。
setVisibility: function( visibility )
设置图层可见性,设置图层的隐藏,显示,重绘的相应的可见标记。
display: function( display )
临时隐藏或者显示图层。通过对CSS控制产生即时效果,重新渲染失效。 一般用 setVisibility 方法来动态控制图层的显示和隐藏。
calculateInRange: function()
计算当前地图显示的分辨率是否在图层的最大最小分辨率范围内 Returns: {Boolean} 图层以当前地图分辨率显示,如果’alwaysInRange’ 设置为true,则此函数返回true。
setIsBaseLayer: function( isBaseLayer )
设置当前图层性质(底图或普通图层),一旦图层性质改变会触发changebaselayer事件。 Parameters: isBaseLayer - {Boolean}
getResolution: function()
获得当前图层分辨率。
getExtent: function()
获得边界范围。
getZoomForExtent: function( extent,
closest )
获得当前的缩放级别。 Parameters: extent - {SuperMap.Bounds} closest - {Boolean} 查找最接近指定范围边界的缩放级别。 默认为false.
getResolutionForZoom: function( zoom )
根据指定的缩放级别返回对应的分辨率。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。
getScaleForZoom: function( zoom )
通过指定的缩放级别返回对应的比例尺。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。
getZoomForResolution: function( resolution,
closest )
根据指定的分辨率返回对应的缩放级别。 Parameters: resolution - {Float} 分辨率大小。 closest - {Boolean} 查找当前显示的分辨率对应的缩放级别,默认为false。
getLonLatFromViewPortPx: function ( viewPortPx )
根据指定的像素点位置返回经纬度坐标。 Parameters: viewPortPx - {SuperMap.Pixel}传入的像素点。
此类用x,y坐标描绘屏幕坐标(像素点)。
getViewPortPxFromLonLat: function ( lonlat )
根据指定的纬度坐标返回像素点位置。 Parameters: lonlat - {SuperMap.LonLat}经纬度。
这个类用来表示经度和纬度对。
setOpacity: function( opacity )
设置图层的不透明度,取值[0-1]之间。使用方法如:
此类描绘一对高宽值的实例。
Close