Map~Map(divid, options, callback)

地图对象,承载图层,控件,叠加物的容器。
地图对象,是其它大多数对象存在的前提。对于图层、地理要素、模型、控件,它是一个dom容器。

Summary

Methods:
addControl

添加一个地图控件。注意:同类型的控件只能添加一个,之后的都会被忽略,起不到控件本来的作用

addLayer

添加图层。将图层添加到图层容器中。通过zIndex来确定图层在图层容器中的上下压盖顺序,值越大,会压盖值小的图层,故显示在上面。如果图层已经添加到地图上,则不会执行添加操作

addLayers

添加一组图层。该方法根据图层在数组中的先后顺序,依次将图层添加到地图上。

destroy

地图销毁。和Map相关的事件、控件、DOM元素以及地图对象本身都将从内存中移除。

detectFeaturesAtPixel

在地图上搜索给定像素附近的地理要素/模型。注意:无法搜索图片式图层中的地理要素/模型。

disableInteractive

取消和要素的交互

enableInteractive

激活和要素的交互,要素所在图层的enableHashCode=true时可以进行交互。
要素包含{module:feature~Vector};
交互行为:onClick、onHover

flyTo

滑行动画实现地图移动倾斜缩放

getAllLayers

获取加载到地图上的所有图层。

getCenter

计算地图视窗中心的地理坐标。

getControlByType

获取指定类型的控件。

getControls

获取添加到地图上的所有控件。

getCoordinateFromPixel

计算屏幕像素位置所对应的地理坐标。
该方法在两种情况下计算的准确度将降低:
1.地理坐标超出地图视窗的地理范围时;
2.地图旋转的俯仰角较大时,偏离地图中心越远,准确度越低。

getCrs

获取当前地图的坐标系对象。

getExtent

获取当前地图视窗的地理范围。

getHighlightColor

获取全局高亮颜色

getLayerCount

获取图层数量。

getLayersByName

根据名称获取图层对象。

getLayerZIndex

获取图层的顺序。

getMaxResolution

获取当前地图的最大分辨率。

getMaxZoom

获取地图最大缩放级别。

getMinResolution

获取当前地图的最小分辨率。

getMinZoom

获取地图最小缩放级别。

getPanEnable

返回一个值,指示当前地图是否允许平移。

getPixelFromCoordinate

计算地理坐标对应的屏幕像素位置。起算点是当前屏幕坐标系原点。
该方法在三种情况下计算的准确度将降低:
1.当地理坐标超出地图视窗的地理范围时;
2.当地图旋转的俯仰角较大时,偏离地图中心越远准确度越低;
3.地理坐标的Z分量接近甚至超出相机高度时。

getResolution

获取地图分辨率。如果传入zoom参数,则返回对应缩放级别的分辨率,否则返回当前缩放级别的分辨率。

getResolutions

获取地图分辨率数组。

getRestrictedExtent

获取允许访问的最大地理范围

getScale

获取当前地图比例尺分母,根据地图的分辨率、坐标系和当前级别计算得出。

getViewport

计算当前地图视口的像素范围。

getZoom

获取地图缩放级别。如果传入res参数,则在分辨率数组中寻找最接近res且不小于res的级别,否则返回地图的当前缩放级别。

getZoomEnable

返回一个值,指示当前地图是否允许缩放。

printMap

打印地图。如果地图存在多个canvas容器,只打印最下方的canvas容器里的内容。

redraw

重绘地图

removeAllLayers

去除与地图对象挂接的所有图层。图层对象脱离地图对象后依然存在,直到彻底销毁这些图层。

removeControl

移除地图控件。

removeLayer

从地图对象的图层数组中移除指定图层。注意:图层对象脱离地图对象后依然存在,直到该图层被彻底销毁。

setCenter

设置地图的中心点和缩放级别。

setHighlightColor

设置全局高亮颜色值

setLayerZIndex

调整当前图层在所有图层中的位置(zIndex)。zIndex决定了图层的渲染顺序。

setMaxZoom

设置地图最大缩放级别。

setMinZoom

设置地图最小缩放级别。

setPanEnable

激活或者禁用平移控件。

setResolutions

设置地图分辨率数组。

setRestrictedExtent

设置允许访问的最大地理范围 暂时未实现

setZoomEnable

激活或者禁用缩放控件。

stopFly

停止地图滑行,销毁当前的滑行动画

zoomIn

调用该方法一次,地图将放大一级,直到最大级别。

zoomOut

调用该方法一次,地图将缩小一级,直到最小级别。

zoomTo

将地图缩放到指定级别。

zoomToExt

缩放到指定的地理范围。

Constructor

new Map(divid, options, callback)

Parameters:
Name Type Description
divid String | HTMLElement

一个div元素id属性值或者html元素。Map对象被构造的同时,会在该div内自动创建一个canvas元素作为图层容器。

options Object

地图选项,其中坐标系选项是必须要指明的。

Name Type Description
center module:basetype~Coordinate

一个地理坐标,表示地图被初始化时的视窗中心。随着地图视窗范围变化,这个值会跟随一起改变。

crs module:proj~Crs

地图的坐标系,默认WGS-84。

resolutions Array.<Number>

分辨率数组,分辨率数组中每个元素对应地图每个缩放级别的分辨率。

zoom Number

地图初始缩放级别。

minLevel Number

可以缩放到的最小比例级别,默认为0。

maxLevel Number

可以缩放到的最大比例级别,默认为分率数组对应的长度。

restrictedExtent module:basetype~Extent

允许访问的地图的最大范围,超过该范围时地图将不能被拖拽显示。

enablePan Boolean

是否允许平移地图,默认为true。如果为false,地图对象在被构造后不能够被平移,除非增加平移控件。

enableZoom Boolean

是否允许缩放地图,默认为true。如果为false,地图对象在初始化后不能缩放,除非添加缩放控件。

callback function

地图初始化回调函数,地图其他逻辑的编写都要在回调函数中开始执行。默认执行函数:控制台输出"The map is completed!"

Example
//要在body元素中添加<div id="hmap"></div>
let res=[
 1.40625,//全球 360/256
 0.703125,
 0.3515625,
 0.17578125,
 0.087890625,
 0.0439453125,
 0.02197265625,
 0.010986328125,
 0.0054931640625,
 0.00274658203125,
 0.001373291015625,
 0.0006866455078125,
 0.00034332275390625,
 0.000171661376953125,
 0.0000858306884765629,
 0.0000429153442382814,
 0.000021457672119140625,
 0.000010728836059570312,
 0.000005364418029785156,//街道
 0.000002682209014892578,
 0.000001341104507446289];//地图分辨率
let coord = new hmap.basetype.Coordinate(120.435078, 30.19345, 0);
let mapOptions = {
             zoom: 12,//地图初始化时的级别
             center: coord,//地图初始化时的中心点
             resolutions: res,//地图的分辨率数组
             crs:new hmap.proj.Crs('4326')//地图采用的坐标系
        };
let map = new hmap.Map("hmap", mapOptions,callback);//"hmap"为地图容器div元素的id
//Map对象初始化完成后执行的方法
function callback(){
        console.log("Map 对象初始化完成!");
    }

Methods

addControl(control)

添加一个地图控件。注意:同类型的控件只能添加一个,之后的都会被忽略,起不到控件本来的作用

Parameters:
Name Type Description
control module:control~Control

地图控件。

Throws:

当添加重复控件的时候会抛出异常

Example
let map = new hmap.Map('hmap', mapOptions);//'hmap'为地图容器div元素的id名
let panControl = new hmap.control.Pan();
map.addControl(panControl);

addLayer(layer, zIndex)

添加图层。将图层添加到图层容器中。通过zIndex来确定图层在图层容器中的上下压盖顺序,值越大,会压盖值小的图层,故显示在上面。如果图层已经添加到地图上,则不会执行添加操作

Parameters:
Name Type Description
layer module:layer~Layer

图层对象。

zIndex Number

一个整数,用以指定Layer在图层容器中的上下叠加順序,值越大,会压盖值小的图层,故显示在上面。不传或传null时,会自动赋值:该值取该图层容器中所有图层zIndex最大值+1。

Throws:

当zIndex不为整数的时候

Example
let map = new hmap.Map("hmap", mapOptions);
const vecLayer1 = new hmap.layer.VectorLayer();
map.addLayer(vecLayer1,3);
const vecLayer2 = new hmap.layer.VectorLayer();
map.addLayer(vecLayer2,null);

addLayers(layers)

添加一组图层。该方法根据图层在数组中的先后顺序,依次将图层添加到地图上。

Parameters:
Name Type Description
layers Array.<module:layer~Layer>

图层数组。

Example
let map = new hmap.Map("hmap", mapOptions);//"hmap"为地图容器div元素的id名
let tileOrigin = new hmap.basetype.Coordinate(-180, 90);
let tmsOptions = {
            matrixOrigin: tileOrigin,//切片原点
            dataFormat: "png"//切片文件的格式
       };
let tmsLayer = new hmap.layer.TMSLayer("杭州地图", "http://ip:port/GeoData/map/SpiritMap/vec/", tmsOptions);//url地址为:地图切片的地址
map.addLayer(tmsLayer);
let vecLayer1 = new hmap.layer.VectorLayer("矢量图层1");
let vecLayer2 = new hmap.layer.VectorLayer('矢量图层2');

destroy()

地图销毁。和Map相关的事件、控件、DOM元素以及地图对象本身都将从内存中移除。

detectFeaturesAtPixel(pixel, layerNames, tolerance) → {Array.<Object>}

在地图上搜索给定像素附近的地理要素/模型。注意:无法搜索图片式图层中的地理要素/模型。

Parameters:
Name Type Default Description
pixel module:basetype~Pixel

一个屏幕像素。

layerNames Array.<String> null

图层名称组成的数组。返回的地理要素/模型仅限于指定的图层之内,如果不指定,则查询所有图层。

tolerance Number 5

容差值,默认值为5,单位为像素。在容差范围内搜索到的地理要素/模型都会作为结果返回。

Returns:
Array.<Object> -

地理要素/模型的数组。如果没有检测到任何对象则返回空数组。

Example
let pixel = new hmap.basetype.Pixel(200, 100);
let layerName="测试";
let results = map.detectFeaturesAtPixel(pixel, [layerName], 3);

disableInteractive()

取消和要素的交互

enableInteractive()

激活和要素的交互,要素所在图层的enableHashCode=true时可以进行交互。
要素包含{module:feature~Vector};
交互行为:onClick、onHover

flyTo(options, finishCallback)

滑行动画实现地图移动倾斜缩放

Parameters:
Name Type Description
options Object

动画选项

Name Type Description
desCoord module:basetype~Coordinate

移动到的目标位置

desZoom Number

缩放到的目标级别

duration Number

动画持续时间,以毫秒为单位 默认1500毫秒

finishCallback function

滑行动画结束后回调

Example
map.flyTo({
desCoord:new hmap.basetype.Coordinate(120,30),
duration:5000,
desZoom:15
}, function(){
   console.log("滑行结束");
})

getAllLayers(type) → {Array.<module:layer~Layer>}

获取加载到地图上的所有图层。

Parameters:
Name Type Default Description
type Boolean 1

一个整数,表示要返回哪些类型的图层,默认值为1。
1 返回所有图层,包括地图叠加层。
0 返回的图层中不包含地图叠加层。

Returns:
Array.<module:layer~Layer> -

一个包含图层的数组。

getCenter() → {module:basetype~Coordinate}

计算地图视窗中心的地理坐标。

Returns:
module:basetype~Coordinate -

地理坐标。

getControlByType(controlType)

获取指定类型的控件。

Parameters:
Name Type Description
controlType String

控件类型。有以下几种枚举值:
hmap.control.controlType.DrawFeature
hmap.control.controlType.Handler
hmap.control.controlType.Magnifier
hmap.control.controlType.Measure
hmap.control.controlType.MiniMap
hmap.control.controlType.MousePosition
hmap.control.controlType.MouseTipControl
hmap.control.controlType.Pan
hmap.control.controlType.Plot
hmap.control.controlType.Rotate
hmap.control.controlType.ScaleBar
hmap.control.controlType.Zoom

Example
let zoom=map.getControlByType(hmap.control.controlType.Zoom);

getControls() → {Array.<module:control~Control>}

获取添加到地图上的所有控件。

Returns:
Array.<module:control~Control>

getCoordinateFromPixel(pixel) → {module:basetype~Coordinate}

计算屏幕像素位置所对应的地理坐标。
该方法在两种情况下计算的准确度将降低:
1.地理坐标超出地图视窗的地理范围时;
2.地图旋转的俯仰角较大时,偏离地图中心越远,准确度越低。

Parameters:
Name Type Description
pixel module:basetype~Pixel

屏幕像素。

Throws:

pixel参数不是像素module:basetype~Pixel对象时,抛出异常;

Returns:
module:basetype~Coordinate -

地理坐标。转换过程忽略地理坐标的高程分量。

Example
let map = new hmap.Map("hmap", mapOptions, callback);//"hmap"为地图容器div元素的id名
 //Map对象初始化完成后执行的方法
 function callback(){
            let pixel = new hmap.basetype.Pixel(100, 50);
            let result = map.getCoordinateFromPixel(pixel);
            console.log(result); //new hmap.basetype.Coordinate(120.13982, 30.34331, 0)在地图未旋转的情况下可以得到该测试结果
        }

getCrs() → {module:proj~Crs}

获取当前地图的坐标系对象。

Returns:
module:proj~Crs -

坐标系信息。

getExtent() → {module:basetype~Extent|null}

获取当前地图视窗的地理范围。

Returns:
module:basetype~Extent | null -

地理范围。如果当前可视范围超出了最大地理范围,则返回null。

Example
let map = new hmap.Map("hmap", mapOptions, callback);//"hmap"为地图容器div元素的id名
     //Map对象初始化完成后执行的方法
     function callback(){
            let result = map.getExtent();
            console.log(result); // new hmap.basetype.Extent(120.108235,30.176284,120.761921,30.210616)
        }

getHighlightColor() → {module:style~Color}

获取全局高亮颜色

getLayerCount() → {Number}

获取图层数量。

Returns:
Number -

图层数量。

getLayersByName(name) → {Array.<module:layer~Layer>}

根据名称获取图层对象。

Parameters:
Name Type Description
name String

图层名称。

Returns:
Array.<module:layer~Layer> -

名称为给定值的图层数组。

getLayerZIndex(layer) → {Number}

获取图层的顺序。

Parameters:
Name Type Description
layer module:layer~Layer

图层对象

Returns:
Number -

图层的zIndex值

getMaxResolution() → {Number}

获取当前地图的最大分辨率。

Returns:
Number -

最大分辨率。

getMaxZoom() → {Number}

获取地图最大缩放级别。

Returns:
Number -

最大缩放级别。

getMinResolution() → {Number}

获取当前地图的最小分辨率。

Returns:
Number -

最小分辨率。

getMinZoom() → {Number}

获取地图最小缩放级别。

Returns:
Number -

最小缩放级别。

getPanEnable() → {Boolean}

返回一个值,指示当前地图是否允许平移。

Returns:
Boolean -

true表示允许平移,false表示不允许平移。

getPixelFromCoordinate(coord) → {module:basetype~Pixel}

计算地理坐标对应的屏幕像素位置。起算点是当前屏幕坐标系原点。
该方法在三种情况下计算的准确度将降低:
1.当地理坐标超出地图视窗的地理范围时;
2.当地图旋转的俯仰角较大时,偏离地图中心越远准确度越低;
3.地理坐标的Z分量接近甚至超出相机高度时。

Parameters:
Name Type Description
coord module:basetype~Coordinate

地理坐标。转换过程考虑地理坐标的高程分量。

Throws:

coord参数不是坐标module:basetype~Coordinate对象时,抛出异常;

Returns:
module:basetype~Pixel -

屏幕像素。

Example
let map = new hmap.Map("hmap", mapOptions, callback);//"hmap"为地图容器div元素的id名
 //Map对象初始化完成后执行的方法
 function callback(){
            let coord = new hmap.basetype.Coordinate(120.13982, 30.34331, 0);
            let result = map.getPixelFromCoordinate(coord);
            console.log(result); //new hmap.basetype.Pixel(100, 50)在地图未旋转的情况下可以得到该测试结果
        }

getResolution(zoom) → {Number}

获取地图分辨率。如果传入zoom参数,则返回对应缩放级别的分辨率,否则返回当前缩放级别的分辨率。

Parameters:
Name Type Description
zoom Number

缩放级别。

Throws:

分辨率数组为空时,抛出异常;
参数zoom比0小,或大于等于分辨率数组的长度时,抛出异常。

Returns:
Number -

地图分辨率。

getResolutions() → {Array.<Number>}

获取地图分辨率数组。

Returns:
Array.<Number> -

分辨率数组。

getRestrictedExtent() → {module:basetype~Extent}

获取允许访问的最大地理范围

Returns:
module:basetype~Extent -

允许访问的最大地理范围

getScale() → {Number}

获取当前地图比例尺分母,根据地图的分辨率、坐标系和当前级别计算得出。

Returns:
Number -

当前地图比例尺分母。

Example
let map = new hmap.Map("hmap", mapOptions, callback);//"hmap"为地图容器div元素的id名
 //Map对象初始化完成后执行的方法
 function callback(){
            let result = map.getScale();
            console.log(result); //54070.29327392578
        }

getViewport() → {Array.<Number>}

计算当前地图视口的像素范围。

Returns:
Array.<Number> -

像素范围。

Example
let map = new hmap.Map("hmap", mapOptions, callback);//"hmap"为地图容器div元素的id名
     //Map对象初始化完成后执行的方法
     function callback(){
            let result = map.getViewport();
            console.log(result); // [0, 0, 1904, 100]
        }

getZoom(res) → {Number}

获取地图缩放级别。如果传入res参数,则在分辨率数组中寻找最接近res且不小于res的级别,否则返回地图的当前缩放级别。

Parameters:
Name Type Description
res Number

分辨率。

Returns:
Number -

缩放级别。

getZoomEnable() → {Boolean}

返回一个值,指示当前地图是否允许缩放。

Returns:
Boolean -

true表示允许缩放,false表示不允许缩放。

printMap()

打印地图。如果地图存在多个canvas容器,只打印最下方的canvas容器里的内容。

redraw()

重绘地图

removeAllLayers()

去除与地图对象挂接的所有图层。图层对象脱离地图对象后依然存在,直到彻底销毁这些图层。

removeControl(control)

移除地图控件。

Parameters:
Name Type Description
control module:control~Control

地图控件

removeLayer(layer)

从地图对象的图层数组中移除指定图层。注意:图层对象脱离地图对象后依然存在,直到该图层被彻底销毁。

Parameters:
Name Type Description
layer module:layer~Layer | module:layer~OverlayLayer

要删除的图层。

setCenter(center, zoom)

设置地图的中心点和缩放级别。

Parameters:
Name Type Description
center module:basetype~Coordinate

地图中心点的地理坐标。设置中心点时,Z值坐标无效。

zoom Number

地图缩放级别。如果参数小于最小的缩放级别,则缩小到最小级级别;反之如果参数大于最大级别,则放大到最大级别。

Throws:

center参数不是坐标module:basetype~Coordinate对象时,抛出异常;

setHighlightColor(color) → {module:Map~Map}

设置全局高亮颜色值

Parameters:
Name Type Description
color module:style~Color

全局高亮颜色值

Returns:
module:Map~Map -

地图对象

setLayerZIndex(layer, zIndex)

调整当前图层在所有图层中的位置(zIndex)。zIndex决定了图层的渲染顺序。

Parameters:
Name Type Description
layer module:layer~Layer | module:layer~OverlayLayer

要调整的图层。

zIndex Number

图层的位置。

setMaxZoom(zoom)

设置地图最大缩放级别。

Parameters:
Name Type Description
zoom Number

地图最大缩放级别。

Throws:

下述情况下将抛出异常:
1.参数zoom非整数值;
2.参数zoom小于0,或大于等于分辨率数组的长度;
3.参数zoom比最小缩放级别小。

setMinZoom(zoom)

设置地图最小缩放级别。

Parameters:
Name Type Description
zoom Number

地图最小缩放级别。

Throws:

下述情况下将抛出异常:
1.参数zoom非整数值;
2.参数zoom小于0,或大于等于分辨率数组的长度;
3.参数zoom比最大缩放级别大。

setPanEnable(enablePan)

激活或者禁用平移控件。

Parameters:
Name Type Description
enablePan Boolean

true表示激活,false表示禁用。

setResolutions(resolutions) → {module:Map~Map}

设置地图分辨率数组。

Parameters:
Name Type Description
resolutions Array.<Number>

分辨率数组。

Returns:
module:Map~Map -

地图对象。

setRestrictedExtent(extent)

设置允许访问的最大地理范围 暂时未实现

Parameters:
Name Type Description
extent module:basetype~Extent

允许访问的最大地理范围

setZoomEnable(enableZoom)

激活或者禁用缩放控件。

Parameters:
Name Type Description
enableZoom Boolean

true表示激活,false表示禁用。

stopFly()

停止地图滑行,销毁当前的滑行动画

zoomIn()

调用该方法一次,地图将放大一级,直到最大级别。

zoomOut()

调用该方法一次,地图将缩小一级,直到最小级别。

zoomTo(zoom)

将地图缩放到指定级别。

Parameters:
Name Type Description
zoom Number

地图的缩放级别,类型为正整数。如果参数小于最小的缩放级别,则缩小到最小级级别;反之如果参数大于最大级别,则放大到最大级别。

zoomToExt(ext)

缩放到指定的地理范围。

Parameters:
Name Type Description
ext module:basetype~Extent

地理范围,超出最大层级按照最大层级显示。