11/**
22 * Inspired by https://github.com/kartena/Proj4Leaflet
3- */
4- import L from "leaflet" ;
3+ */
4+ import L from "leaflet" ;
55import proj4 from "proj4" ;
6+ window . Proj4js = proj4 ;
67L . Proj = { } ;
78
89L . Proj . _isProj4Obj = function ( a ) {
@@ -12,6 +13,7 @@ L.Proj._isProj4Obj = function (a) {
1213
1314/**
1415 * @class L.Proj.Projection
16+ * @private
1517 * @classdesc Proj投影定义类
1618 * @extends L.Class{@linkdoc-leaflet/#class }
1719 * @param code - {number}地理编码
@@ -74,17 +76,17 @@ L.Proj.Projection = L.Class.extend({
7476 * @class L.Proj.CRS
7577 * @classdesc Proj坐标系统定义类
7678 * @extends L.Class{@linkdoc-leaflet/#class }
77- * @param a -{string} proj srsCode。
78- * @param b -{string} proj def。
79- * @param c -{Object} options。可选参数:<br>
79+ * @param srsCode -{string} proj srsCode。
80+ * @param options -{Object} options。可选参数:<br>
81+ * def -{string} 投影的proj4定义。
8082 * origin -{Array|L.Point} 原点。必填<br>
8183 * scales -{Array} 比例尺数组 <br>
8284 * scaleDenominators -{Array} 比例尺分母数组 <br>
8385 * resolutions -{Array} 分辨率数组 <br>
8486 * bounds -{Array|L.Bounds} 范围
8587 * @example
8688 * 用法:
87- * var crs =new L.Proj.CRS("EPSG:4326", '', {
89+ * var crs =L.Proj.CRS("EPSG:4326", '', {
8890 * origin: [-180,90],
8991 * scaleDenominators: [2000,1000,500,200,100,50,20,10],
9092 * });
@@ -93,36 +95,41 @@ L.Proj.Projection = L.Class.extend({
9395 * ...
9496 * })
9597 */
96- L . Proj . CRS = L . Class . extend ( {
98+ export var CRS = L . Class . extend ( {
9799 includes : L . CRS ,
98100
99101 options : {
100102 transformation : new L . Transformation ( 1 , 0 , - 1 , 0 )
101103 } ,
102104
103- initialize : function ( a , b , c ) {
104- var code ,
105- proj ,
106- def ,
107- options ;
105+ initialize : function ( srsCode , options ) {
106+ var code , proj , def ;
108107
109- if ( L . Proj . _isProj4Obj ( a ) ) {
110- proj = a ;
108+ if ( L . Proj . _isProj4Obj ( srsCode ) ) {
109+ proj = srsCode ;
111110 code = proj . srsCode ;
112- options = b || { } ;
111+ options = options || { } ;
113112
114113 this . projection = new L . Proj . Projection ( proj , options . bounds ) ;
115114 } else {
116- code = a ;
117- def = b ;
118- options = c || { } ;
115+ code = srsCode ;
116+ options = options || { } ;
117+ def = options . def || '' ;
119118 this . projection = new L . Proj . Projection ( code , def , options . bounds ) ;
120119 }
121120
122121 L . Util . setOptions ( this , options ) ;
123122 this . code = code ;
124123 this . transformation = this . options . transformation ;
124+ if ( this . options . bounds ) {
125125
126+ }
127+ if ( this . options . bounds ) {
128+ this . options . bounds = L . bounds ( this . options . bounds ) ;
129+ }
130+ if ( ! this . options . origin && this . options . bounds ) {
131+ this . options . origin = [ this . options . bounds . min . x , this . options . bounds . max . y ] ;
132+ }
126133 if ( this . options . origin ) {
127134 if ( this . options . origin instanceof L . Point ) {
128135 this . options . origin = [ this . options . origin . x , this . options . origin . y ] ;
@@ -132,15 +139,15 @@ L.Proj.CRS = L.Class.extend({
132139 - 1 , this . options . origin [ 1 ] ) ;
133140 }
134141
135- if ( this . options . scales && this . options . scales . length > 0 ) {
142+ if ( this . options . scales && this . options . scales . length > 0 ) {
136143 this . _scales = this . _toProj4Scales ( this . options . scales ) ;
137- } else if ( this . options . scaleDenominators && this . options . scaleDenominators . length > 0 ) {
144+ } else if ( this . options . scaleDenominators && this . options . scaleDenominators . length > 0 ) {
138145 var scales = [ ] ;
139146 for ( var i = 0 ; i < this . options . scaleDenominators . length ; i ++ ) {
140147 scales [ i ] = 1 / this . options . scaleDenominators [ i ] ;
141148 }
142149 this . _scales = this . _toProj4Scales ( scales ) ;
143- } else if ( this . options . resolutions && this . options . resolutions . length > 0 ) {
150+ } else if ( this . options . resolutions && this . options . resolutions . length > 0 ) {
144151 this . _scales = [ ] ;
145152 for ( var i = this . options . resolutions . length - 1 ; i >= 0 ; i -- ) {
146153 if ( this . options . resolutions [ i ] ) {
@@ -234,7 +241,7 @@ L.Proj.CRS = L.Class.extend({
234241 if ( ! bounds ) {
235242 return [ ] ;
236243 }
237- var boundsSize = L . bounds ( bounds ) . getSize ( ) ;
244+ var boundsSize = bounds . getSize ( ) ;
238245 var extendsSize = Math . max ( boundsSize . x , boundsSize . y ) ;
239246 var resolution = extendsSize / 256 ;
240247 var scales = [ ] ;
@@ -245,3 +252,7 @@ L.Proj.CRS = L.Class.extend({
245252 return scales ;
246253 }
247254} ) ;
255+ export var crs = function ( srsCode , options ) {
256+ return new CRS ( srsCode , options )
257+ } ;
258+ L . Proj . CRS = crs ;
0 commit comments