在线咨询
QQ交流群
微信公众号

Class: Util

CMAP. Util


new Util()

地图相关的工具类

Methods


<static> _isClassifyItem()

是否是分类的样式


<static> applyVectorEarthStyle()

应用矢量地球模版


<static> convertLonlatToWebMercator(lonLat) → {Array}

经纬度坐标转Web墨卡托投影坐标

Parameters:
Name Type Description
lonLat Array

[经度,纬度]

Returns:

Web墨卡托投影坐标 [x,y]

Type
Array
Example
CMAP.Util.convertWebMercatorToLonlat([119.5,36.5]); //返回web墨卡托坐标 [12968720.675611112, 4793547.458437541]

<static> convertLonlatToWorld(lonLat, h) → {Array}

经纬度转世界坐标

Parameters:
Name Type Description
lonLat Array

[经度,纬度]

h Number

离地高度 默认0

Returns:

世界坐标 [x,y,z]

Type
Array

<static> convertWebMercatorToLonlat(mercator) → {Array}

墨卡托投影转经纬度坐标

Parameters:
Name Type Description
mercator Array

Web墨卡托坐标 [x,y]

Returns:

经纬度坐标 [经度,纬度]

Type
Array
Example
var coords = CMAP.Util.convertWebMercatorToLonlat([12968720.675611112, 4793547.458437541]); //返回经纬度坐标 [119.5,36.5]

<static> convertWgs84ToGcj02(wgs84经纬度坐标) → {Array}

wgs84坐标转为gcj02坐标

Parameters:
Name Type Description
wgs84经纬度坐标 Array

[经度,纬度]

Returns:

gcj02经纬度坐标 [经度,纬度]

Type
Array
Example
var gcj02Coords = CMAP.Util.convertWgs84ToGcj02([116.5,39.5]); //返回gcj02坐标 [116.5059564261526, 39.501157091519175]

<static> convertWindowToWorld(windowPosition) → {Array}

屏幕坐标转世界坐标

Parameters:
Name Type Description
windowPosition Array

屏幕坐标

Returns:

世界坐标 [x,y,z]

Type
Array

<static> convertWorldToLonlat(pos) → {Array}

世界坐标转经纬度

Parameters:
Name Type Description
pos Array

世界坐标[x,y,z]

Returns:

经纬度坐标(带高度) [经度,纬度,高度]

Type
Array

<static> correctSkyBox()

根据当前相机位置校正天空盒


<static> createSkyAndSun()

创建天空和太阳,默认会替代之前设置的光源


<static> getAnglesFromLonlat(lonlat, angle) → {Array}

根据经纬度和方位角得到可以使物体贴地的欧拉角

Parameters:
Name Type Description
lonlat Array

经纬度坐标

angle Number

方位角 默认0

Returns:

旋转角度 [angleX, angleY, angleZ]

Type
Array

<static> getAzimuth(lonlat1, lonlat2) → {number}

计算两点间的方位角

Parameters:
Name Type Description
lonlat1 Array

起点经纬度

lonlat2 Array

终点经纬度

Returns:

方位角

Type
number

<static> getCenterCoordinates(coordinates) → {Array}

获取多边形中心点

Parameters:
Name Type Description
coordinates Array

多边形经纬度坐标数组 [[x,y],[x,y],[x,y]......] (注:仅支持二维的经纬度数组)

Returns:

[x,y] 中心点坐标

Type
Array
Example
// 返回多边形的重心的经纬度坐标 [116.47585956650495, 39.98538569844471]
var center = CMAP.Util.getCenter([[116.4757, 39.9851],
[116.4755, 39.9852],
[116.4761, 39.9857],
[116.4762, 39.9856],
[116.4757, 39.9851]]);

<static> getCenterOfGravityPoint(coordinates) → {Array}

获取多边形重心

Parameters:
Name Type Description
coordinates Array

多边形经纬度坐标数组 [[x,y],[x,y],[x,y]......] (注:仅支持二维的经纬度数组)

Returns:

[x,y] 重心点坐标

Type
Array
Example
// 返回多边形的重心的经纬度坐标 [116.47585956650495, 39.98538569844471]
var center = CMAP.Util.getCenterOfGravityPoint([[116.4757, 39.9851],
[116.4755, 39.9852],
[116.4761, 39.9857],
[116.4762, 39.9856],
[116.4757, 39.9851]]);

<static> getFeatureCollectionExtent(featureCollection) → {Object}

获取geojson的范围

Parameters:
Name Type Description
featureCollection Object

geojson对象

Returns:

geojson数据的范围

Type
Object
Example
//返回geojson数据的范围 {minX: -73.99995803833008, minY: 40.71805432623303, maxX: -73.98167610168457, maxY: 40.726087955120704}
CMAP.Util.getFeatureCollectionExtent({
        "type": "FeatureCollection",
        "crs": {
            "properties": {
                "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
            },
            "type": "name"
        },
        "features": [
            {
                "type": "Feature",
                "properties": {
                    "type": "rain",
                    "value": 5
                },
                "geometry": {
                    "type": "Point",
                    "coordinates": [
                        -73.99995803833008,
                        40.71805432623303
                    ]
                }
            },
            {
                "type": "Feature",
                "properties": {
                    "type": "water",
                    "value": 7
                },
                "geometry": {
                    "type": "Point",
                    "coordinates": [
                        -73.98167610168457,
                        40.726087955120704
                    ]
                }
            }
        ]
    });

<static> getLineLength(coords) → {number}

计算线的长度(球面距离) 单位:米

Parameters:
Name Type Description
coords Array

经纬度

Returns:
Type
number
Example
//根据经纬度计算折线长度 返回结果 29.952
var length = CMAP.Util.getLineLength([[116.482141, 40.068031], [116.482137, 40.06816],[116.482133, 40.06802]]);

<static> getPolygonExtent(coordinates) → {Object}

获取多边形的范围

Parameters:
Name Type Description
coordinates Array

多边形经纬度坐标数组 [[x,y],[x,y],[x,y]......] 支持Polygon和MultiPolygon

Returns:

多边形的范围

Type
Object
Example
// 返回多边形范围  {minX: 116.4755, minY: 39.9851, maxX: 116.4762, maxY: 39.9857}
var center = CMAP.Util.getPolygonExtent([[116.4757, 39.9851],
[116.4755, 39.9852],
[116.4761, 39.9857],
[116.4762, 39.9856],
[116.4757, 39.9851]]);

<static> getSphericalArea(coords) → {number}

计算多边形的球面面积

Parameters:
Name Type Description
coords Array

多边形的坐标

Returns:

球面面积 单位平方米

Type
number

<static> getSphericalDistance(lonlat1, lonlat2) → {number}

计算两点间的球面距离 单位:米

Parameters:
Name Type Description
lonlat1 Array

起点经纬度

lonlat2 Array

终点经纬度

Returns:

球面距离

Type
number

<static> positionToQuaternion(pos, angle) → {THREE.Quaternion}

根据位置和旋转角度计算贴地的四元数

Parameters:
Name Type Description
pos
angle
Returns:
Type
THREE.Quaternion