图层类。
SuperMap. |
图层类。 |
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. |
|
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 | 设置图层可见性,设置图层的隐藏,显示,重绘的相应的可见标记。 |
{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; }
{SuperMap.Map} 图层所关联的地图,默认为null。当图层添加到地图上时设置此变量。
{SuperMap.Projection} or {String} 地图投影,默认为null。创建图层时, 在图层的 options 上可以设置当前图层默认的投影字符串,如“EPSG:4326” 还需要设置 maxExtent、maxResolution、units 。
{SuperMap.Bounds} 在图层实例化的时候设置图层的最大范围,平移过程中边界中心点不会偏离可视窗口。 不同的投影下范围不同,如world在“EPSG:4326”下一般为左下: ( -180.0 , -90.0 ),右上: ( 180.0 , 90.0 ) 而在“EPSG:3857”下为左下: ( -20037508.34 , -25776731.36 ),右上: ( 20037508.34 , 25776731.36 )
{SuperMap.Bounds}在图层实例化的时候设置图层最小范围。
getImageSize: function( bounds )
获取瓦片的大小。 Parameters: bounds - {SuperMap.Bounds} 瓦片的边界选项。可以被子类用来处理图层上不同瓦片的边缘范围(例如:Zoomify)。
{SuperMap.Size} 图像的大小。
getZoomForExtent: function( extent, closest )
获得当前的缩放级别。 Parameters: extent - {SuperMap.Bounds} closest - {Boolean} 查找最接近指定范围边界的缩放级别。 默认为false.
{Integer} 传入的exent对应的缩放级别的索引。首先调用getSize函数获取当前地图的size, 然后利用此size和传入的exent计算理想的分辨率(idealResolution), 最后根据idealResolution和传入的closest参数调用getZoomForResolution函数获得当前的缩放级别。
getLonLatFromViewPortPx: function ( viewPortPx )
根据指定的像素点位置返回经纬度坐标。 Parameters: viewPortPx - {SuperMap.Pixel}传入的像素点。
{SuperMap.LonLat} 返回经纬度,此经纬度是由传入类型为 <SuperMap.Pixel>的参数viewPortPx计算得到。
getViewPortPxFromLonLat: function ( lonlat )
根据指定的纬度坐标返回像素点位置。 Parameters: lonlat - {SuperMap.LonLat}经纬度。
{SuperMap.Pixel} 通过与传入的<SuperMap.LonLat>类型的LonLat参数计算像素点在当前视图窗口的位置。
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); }
opacity | {Float} 图层的不透明度,取值范围:[0-1]。 |
将新的名字赋给当前图层,可以触发地图上的 changelayer 事件。
setName: function( newName )
通过新的Options覆盖以前的Options参数。 Parameters: newOptions - {Object}新的Options参数。 reinitialize - {Boolean} 如果设为 true,并且当前的 baseLayer 的 resolution 发生变化, 则 map 需要重新定位有效的 resolution ,并且触发 changebaselayer 事件。
addOptions: function ( newOptions, reinitialize )
此函数在子类中复写实现。
onMapResize: function()
重新绘制图层,对于图片图层,该方法销毁掉该图层的div以及地图图片,然后重新组织div,重新请求地图图片。如果图层被重绘返回true,否则返回false。在子图层控制时,修改图层信息后,调用该方法重新绘制图层显示改变后的效果。该方法不适用于覆盖物图层,例如SuperMap.Layer.Markers。
redraw: function()
从地图中移除图层。
removeMap: function( map )
获取瓦片的大小。 Parameters: bounds - {SuperMap.Bounds} 瓦片的边界选项。可以被子类用来处理图层上不同瓦片的边缘范围(例如:Zoomify)。
getImageSize: function( bounds )
设置瓦片的大小。
setTileSize: function( size )
获取当前图层可见性。 Returns: {Boolean} 是否可见(当前地图的resolution在最大最小resolution之间)。
getVisibility: function()
设置图层可见性,设置图层的隐藏,显示,重绘的相应的可见标记。
setVisibility: function( visibility )
临时隐藏或者显示图层。通过对CSS控制产生即时效果,重新渲染失效。 一般用 setVisibility 方法来动态控制图层的显示和隐藏。
display: function( display )
计算当前地图显示的分辨率是否在图层的最大最小分辨率范围内 Returns: {Boolean} 图层以当前地图分辨率显示,如果’alwaysInRange’ 设置为true,则此函数返回true。
calculateInRange: function()
设置当前图层性质(底图或普通图层),一旦图层性质改变会触发changebaselayer事件。 Parameters: isBaseLayer - {Boolean}
setIsBaseLayer: function( isBaseLayer )
获得当前图层分辨率。
getResolution: function()
获得边界范围。
getExtent: function()
获得当前的缩放级别。 Parameters: extent - {SuperMap.Bounds} closest - {Boolean} 查找最接近指定范围边界的缩放级别。 默认为false.
getZoomForExtent: function( extent, closest )
根据指定的缩放级别返回对应的分辨率。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。
getResolutionForZoom: function( zoom )
通过指定的缩放级别返回对应的比例尺。 Parameter: zoom - {Float}缩放级别,范围一般在[0,16]内。
getScaleForZoom: function( zoom )
根据指定的分辨率返回对应的缩放级别。 Parameters: resolution - {Float} 分辨率大小。 closest - {Boolean} 查找当前显示的分辨率对应的缩放级别,默认为false。
getZoomForResolution: function( resolution, closest )
根据指定的像素点位置返回经纬度坐标。 Parameters: viewPortPx - {SuperMap.Pixel}传入的像素点。
getLonLatFromViewPortPx: function ( viewPortPx )
根据指定的纬度坐标返回像素点位置。 Parameters: lonlat - {SuperMap.LonLat}经纬度。
getViewPortPxFromLonLat: function ( lonlat )
设置图层的不透明度,取值[0-1]之间。使用方法如:
setOpacity: function( opacity )