为地图设置投影
SuperMap iClient for Leaflet 通过投影类 L.Proj.CRS 可以方便的定义地图投影,支持设置范围、原点、比例尺数组以及分辨率数组。例如:
// 定义地图投影
var crs = L.Proj.CRS("EPSG:4326", {
origin: [114.59, 42.31],
scaleDenominators: [100000, 50000, 25000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 1]
});
var map = L.map('map', {
crs: crs,
center: [39.79, 116.85],
});
L.supermap.tiledMapLayer(url).addTo(map);
对于不支持或者用户自定义的投影,需要通过 Proj4js.defs[] 静态常量定义键值对实现。Proj4js 是一个投影相关的 JavaScript 脚本库,详细介绍请参见 Proj4js 官网: http://trac.osgeo.org/proj4js/。
一个简单的投影信息描述如下:
Proj4js.defs("EPSG:21418","+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +units=m +no_defs ");
有关各种投影的参数定义,可参考 http://spatialreference.org;如果已有定义,可搜索并查看其投影参数,例如EPSG:21418,其投影参数为 http://spatialreference.org/ref/epsg/21418/proj4/。
对于用户自定义投影,可通过定义 EPSG code 和 defs 来创建投影,defs 内容为参考投影参数,其分别代表了名称、投影、转换到 WGS84 坐标系(三参数)、椭球长半轴、扁率、原点纬线、中央经线、两条标准纬线、东偏移量、北偏移量和单位等。
Proj4js.defs("EPSG:10010","+title=Beijing1954 +proj=lcc +towgs84=0.0000,0.0000,0.0000 +a=6378245.0000 +rf=298.3 +lat_0=0.00000000 +lon_0=104.000000000 +lat_1=24.000000000 +lat_2=40.000000000 +x_0=0.000 +y_0=0.000 +units=m +no_defs");