proj~Transformer()

实现坐标转换功能的静态类

Summary

Methods:
add

添加一种坐标系到转换器中

GCJ02ToWGS84

将加密后的坐标还原成原始的WGS84坐标,即将GCJ02坐标系下的坐标转换为WGS84坐标系下的坐标。当经纬度坐标在中国国内时进行转换,在国外时原样返回,不进行转换。

get

根据srid获取转换器中对应的坐标系

remove

移除指定的坐标系

transform

将一个坐标系的坐标转换到在另一种坐标系中的坐标值。目前支持4326和3857之间的相互转换,如果需要支持其他转换请先通过add方法添加坐标系。

WebMercatorToWGS84

将Web Mercator(Web墨卡托,EPSG:3857或EPSG:900913)坐标系下的坐标转换为WGS84(EPSG:4326)坐标系下的坐标。调用该方法相当于先调用然后使用transform方法从Web Mercator(EPSG:3857)转到WGS84(EPSG:4326),然后使用GCJ02ToWGS84进行坐标解密

WGS84ToGCJ02

将wgs84的坐标值进行加密,即转换为GCJ02坐标系下对应的坐标。当经纬度坐标在中国国内时进行加密,在国外时原样返回,不进行加密。

WGS84ToWebMercator

将WGS84(EPSG:4326)坐标系下的坐标转换为Web Mercator(Web墨卡托,EPSG:3857或EPSG:900913)坐标系下的坐标。调用该方法相当于先调用了WGS84ToGCJ02进行坐标加密,然后使用transform方法从WGS84(EPSG:4326)转到Web Mercator(EPSG:3857)

Constructor

new Transformer()

Methods

static add(crs) → {module:proj~Transformer}

添加一种坐标系到转换器中

Parameters:
Name Type Description
crs module:proj~Crs | String | Number

坐标系对象或坐标系的srid。

Returns:
module:proj~Transformer -

返回转换器自身

Example
const crs1 = new hmap.proj.Crs('4479');
hmap.proj.Transformer.add(crs);

const srid1 = '900913';
hmap.proj.Transformer.add(srid1);

static GCJ02ToWGS84(coord) → {Array.<Number>|module:basetype~Coordinate}

将加密后的坐标还原成原始的WGS84坐标,即将GCJ02坐标系下的坐标转换为WGS84坐标系下的坐标。当经纬度坐标在中国国内时进行转换,在国外时原样返回,不进行转换。

Parameters:
Name Type Description
coord Array.<Number> | module:basetype~Coordinate

待转换的坐标,可以是经度和纬度组成的数组,或Coordinate对象。

Returns:
Array.<Number> | module:basetype~Coordinate -

纠偏后的坐标,类型与入参坐标一致(入参为经纬度数组,则返回经纬度数组;入参为Coordinate,则也返回Coordinate)

Example
const coord = hmap.proj.Transformer.GCJ02ToWGS84(new hmap.basetype.Coordinate(120.99,30.89,-1.5));

static get(srid) → {module:proj~Crs}

根据srid获取转换器中对应的坐标系

Parameters:
Name Type Description
srid String | Number

坐标系的srid值

Throws:

当参数srid类型不是数字和字符串时,抛出异常:"the srid should be string or number."

Returns:
module:proj~Crs -

坐标系对象

static remove(srid) → {Number}

移除指定的坐标系

Parameters:
Name Type Description
srid String | Number

坐标系的id

Throws:

当参数srid类型不是数字和字符串时,抛出异常:"the srid should be string or number."

Returns:
Number -

删除成功返回1,未删除返回0.

static transform(coord, source, dest) → {module:basetype~Coordinate}

将一个坐标系的坐标转换到在另一种坐标系中的坐标值。目前支持4326和3857之间的相互转换,如果需要支持其他转换请先通过add方法添加坐标系。

Parameters:
Name Type Description
coord module:basetype~Coordinate

需要转换的坐标对象

source module:proj~Crs | String | Number

源坐标系或源坐标系对应的srid

dest module:proj~Crs | String | Number

目标坐标系或目标坐标系对应的srid

Throws:

当source源坐标系或dest目标坐标系不是4326、3857、900913,且没有执行add方法时,抛出异常:source/dest " is not in hmap.proj.Transformer.CrsList, please add first."

Returns:
module:basetype~Coordinate -

经转换得到的坐标对象

Example
const coord = hmap.proj.Transformer.transform(new hmap.basetype.Coordinate(120.99,30.8886,-1.5), 4326, 3857);

static WebMercatorToWGS84(coord, decryption) → {module:basetype~Coordinate}

将Web Mercator(Web墨卡托,EPSG:3857或EPSG:900913)坐标系下的坐标转换为WGS84(EPSG:4326)坐标系下的坐标。调用该方法相当于先调用然后使用transform方法从Web Mercator(EPSG:3857)转到WGS84(EPSG:4326),然后使用GCJ02ToWGS84进行坐标解密

Parameters:
Name Type Default Description
coord module:basetype~Coordinate

待转换的坐标

decryption Boolean true

是否纠偏,默认纠偏。true为纠偏,false为不纠偏

Returns:
module:basetype~Coordinate -

经转换得到的坐标对象

Example
const decryptedWebMercatorCoord = hmap.proj.Transformer.WebMercatorToWGS84(new hmap.basetype.Coordinate(13372229.01,3532854.45,0));

static WGS84ToGCJ02(coord) → {Array.<Number>|module:basetype~Coordinate}

将wgs84的坐标值进行加密,即转换为GCJ02坐标系下对应的坐标。当经纬度坐标在中国国内时进行加密,在国外时原样返回,不进行加密。

Parameters:
Name Type Description
coord Array.<Number> | module:basetype~Coordinate

由经度和纬度组成的数组

Returns:
Array.<Number> | module:basetype~Coordinate -

加偏之后的坐标,类型与入参坐标一致(入参为经纬度数组,则返回经纬度数组;入参为Coordinate,则也返回Coordinate)

Example
const coord = hmap.proj.Transformer.WGS84ToGCJ02(new hmap.basetype.Coordinate(120.99,30.8886,-1.5));

static WGS84ToWebMercator(coord, encryption) → {module:basetype~Coordinate}

将WGS84(EPSG:4326)坐标系下的坐标转换为Web Mercator(Web墨卡托,EPSG:3857或EPSG:900913)坐标系下的坐标。调用该方法相当于先调用了WGS84ToGCJ02进行坐标加密,然后使用transform方法从WGS84(EPSG:4326)转到Web Mercator(EPSG:3857)

Parameters:
Name Type Default Description
coord module:basetype~Coordinate

待转换的坐标

encryption Boolean true

是否加偏,默认加偏。true为加偏,false为不加偏

Returns:
module:basetype~Coordinate -

经转换得到的坐标对象

Example
const encryptedWebMercatorCoord = hmap.proj.Transformer.WGS84ToWebMercator(new hmap.basetype.Coordinate(120.12,30.23));