Mercurial > pub > ImplabJs
comparison src/djol/SquareMeasureTool.js @ 10:8705103f074f
Слияние
author | cin |
---|---|
date | Mon, 21 Aug 2017 18:03:00 +0300 |
parents | f0035923ff3e |
children |
comparison
equal
deleted
inserted
replaced
9:37e9e6bbe87a | 10:8705103f074f |
---|---|
1 define([ | |
2 "dojo/_base/declare", | |
3 "implab/safe", | |
4 "./MeasureToolBase", | |
5 "implab/text/format", | |
6 "dojo/i18n!./format/nls/units", | |
7 "ol" ], | |
8 | |
9 function(declare, safe, MeasureToolBase, format, units, ol) { | |
10 return declare([ MeasureToolBase ], { | |
11 | |
12 isGeodesic : true, | |
13 | |
14 units : 'metric', | |
15 | |
16 constructor : function(opts) { | |
17 if (opts) | |
18 safe.mixin(this,opts,["isGeodesic", "units"]); | |
19 }, | |
20 | |
21 _createDraw : function(source) { | |
22 return new ol.interaction.Draw({ | |
23 source : source, | |
24 type : "Polygon", | |
25 style : this.drawStyle | |
26 }); | |
27 }, | |
28 | |
29 _formatTooltip : function(sketch, proj) { | |
30 var area; | |
31 if (this.isGeodesic) { | |
32 var geom = sketch.getGeometry().clone().transform(proj, 'EPSG:4326'); | |
33 var coordinates = geom.getLinearRing(0).getCoordinates(); | |
34 area = Math.abs(this.wgs84Sphere.geodesicArea(coordinates)); | |
35 } else { | |
36 area = sketch.getGeometry().getArea(); | |
37 } | |
38 | |
39 var mpu, unitName; | |
40 switch (this.units) { | |
41 case "nautical": | |
42 mpu = 1852*1852; | |
43 unitName = units.nmiles2; | |
44 break; | |
45 default: | |
46 mpu = 1852*1852; | |
47 unitName = units.kilometers2; | |
48 } | |
49 | |
50 if (area > mpu/10) { | |
51 return format( | |
52 "{0:#0.##} {1}", | |
53 area / mpu, | |
54 unitName); | |
55 } else { | |
56 return format("{0:#0.##} {1}", area, units.meters2); | |
57 } | |
58 } | |
59 | |
60 }); | |
61 }); |