@@ -1678,7 +1678,6 @@ var lizMap = function() {
1678
1678
else
1679
1679
$ ( '#nominatim-search' ) . remove ( ) ;
1680
1680
1681
- //addComplexPrintControl();
1682
1681
}
1683
1682
1684
1683
function deactivateToolControls ( evt ) {
@@ -1778,25 +1777,44 @@ var lizMap = function() {
1778
1777
return info ;
1779
1778
}
1780
1779
1781
- function getPrintScale ( scale ) {
1782
- if ( scale >= 9500 && scale <= 950000 ) {
1783
- scale = Math . round ( scale / 1000 ) * 1000 ;
1784
- } else if ( scale >= 950000 ) {
1785
- scale = Math . round ( scale / 1000000 ) * 1000000 ;
1786
- } else {
1787
- scale = Math . round ( scale ) ;
1788
- }
1789
- return scale ;
1780
+ function getPrintScale ( aScales ) {
1781
+ var scale = map . getScale ( ) ;
1782
+ var scaleIdx = aScales . indexOf ( scale ) ;
1783
+ if ( scaleIdx == - 1 ) {
1784
+ var s = 0 , slen = aScales . length ;
1785
+ while ( scaleIdx == - 1 && s < slen ) {
1786
+ if ( scale > aScales [ s ] )
1787
+ scaleIdx = s ;
1788
+ else
1789
+ s ++ ;
1790
+ }
1791
+ if ( s == slen ) {
1792
+ scale = aScales [ slen - 1 ] ;
1793
+ } else {
1794
+ scale = aScales [ scaleIdx ] ;
1795
+ }
1796
+ }
1797
+ return scale ;
1798
+ }
1799
+
1800
+ function drawPrintBox ( aLayout , aLayer , aScale ) {
1801
+ var center = map . getCenter ( ) ;
1802
+ var size = aLayout . size ;
1803
+ var units = map . getUnits ( ) ;
1804
+ var unitsRatio = OpenLayers . INCHES_PER_UNIT [ units ] ;
1805
+ var w = size . width / 72 / unitsRatio * aScale / 2 ;
1806
+ var h = size . height / 72 / unitsRatio * aScale / 2 ;
1807
+ var bounds = new OpenLayers . Bounds ( center . lon - w , center . lat - h ,
1808
+ center . lon + w , center . lat + h ) ;
1809
+ var geom = bounds . toGeometry ( ) ;
1810
+ var feat = aLayer . features [ 0 ] ;
1811
+ geom . id = feat . geometry . id ;
1812
+ feat . geometry = geom ;
1813
+ aLayer . drawFeature ( feat ) ;
1814
+ return true ;
1790
1815
}
1791
1816
1792
1817
function addPrintControl ( ) {
1793
- // if no composers removed print
1794
- /*
1795
- if (composers.length == 0 ) {
1796
- $('#togglePrint').parent().remove();
1797
- return false;
1798
- }
1799
- */
1800
1818
if ( ! config [ 'printTemplates' ] || config . printTemplates . length == 0 ) {
1801
1819
$ ( '#togglePrint' ) . parent ( ) . remove ( ) ;
1802
1820
return false ;
@@ -1823,7 +1841,7 @@ var lizMap = function() {
1823
1841
1824
1842
var scaleOptions = '' ;
1825
1843
for ( var i = 0 , len = scales . length ; i < len ; i ++ ) {
1826
- var scale = getPrintScale ( scales [ i ] ) ;
1844
+ var scale = scales [ i ] ;
1827
1845
printCapabilities . scales . push ( scale ) ;
1828
1846
var scaleText = scale ;
1829
1847
if ( scale >= 9500 && scale <= 950000 ) {
@@ -1930,30 +1948,12 @@ var lizMap = function() {
1930
1948
deactivateToolControls ( evt ) ;
1931
1949
1932
1950
var layout = this . layout ;
1933
- var units = map . getUnits ( ) ;
1934
- // get scale and update the select
1935
- var res = map . getResolution ( ) / 2 ;
1936
- var scale = OpenLayers . Util . getScaleFromResolution ( res , units ) ;
1937
- scale = getPrintScale ( scale ) ;
1938
- var scaleIdx = printCapabilities . scales . indexOf ( scale ) ;
1939
- if ( scaleIdx == - 1 ) {
1940
- res = map . getResolution ( ) ;
1941
- scale = OpenLayers . Util . getScaleFromResolution ( res , units ) ;
1942
- scale = getPrintScale ( scale ) ;
1943
- }
1951
+ // get print scale
1952
+ var scale = getPrintScale ( printCapabilities . scales ) ;
1953
+ // update the select
1944
1954
$ ( '#print-menu select.btn-print-scales' ) . val ( scale ) ;
1945
-
1946
- var center = map . getCenter ( ) ;
1947
- var size = layout . size ;
1948
- var unitsRatio = OpenLayers . INCHES_PER_UNIT [ units ] ;
1949
- var w = size . width / 72 / unitsRatio * scale / 2 ;
1950
- var h = size . height / 72 / unitsRatio * scale / 2 ;
1951
- var bounds = new OpenLayers . Bounds ( center . lon - w , center . lat - h ,
1952
- center . lon + w , center . lat + h ) ;
1953
- var geom = bounds . toGeometry ( ) ;
1954
- var feat = layer . features [ 0 ] ;
1955
- geom . id = feat . geometry . id ;
1956
- feat . geometry = geom ;
1955
+ // draw print box
1956
+ drawPrintBox ( layout , layer , scale ) ;
1957
1957
1958
1958
$ ( '#togglePrint' ) . parent ( ) . addClass ( 'active' ) ;
1959
1959
$ ( '#print-menu .title .text' ) . html ( layout . name ) ;
@@ -2020,20 +2020,9 @@ var lizMap = function() {
2020
2020
$ ( '#print-menu select.btn-print-scales' ) . change ( function ( ) {
2021
2021
if ( dragCtrl . active && layer . getVisibility ( ) ) {
2022
2022
var self = $ ( this ) ;
2023
- var units = map . getUnits ( ) ;
2024
2023
var scale = parseFloat ( self . val ( ) ) ;
2025
- var center = map . getCenter ( ) ;
2026
- var size = dragCtrl . layout . size ;
2027
- var unitsRatio = OpenLayers . INCHES_PER_UNIT [ units ] ;
2028
- var w = size . width / 72 / unitsRatio * scale / 2 ;
2029
- var h = size . height / 72 / unitsRatio * scale / 2 ;
2030
- var bounds = new OpenLayers . Bounds ( center . lon - w , center . lat - h ,
2031
- center . lon + w , center . lat + h ) ;
2032
- var geom = bounds . toGeometry ( ) ;
2033
- var feat = layer . features [ 0 ] ;
2034
- geom . id = feat . geometry . id ;
2035
- feat . geometry = geom ;
2036
- layer . drawFeature ( feat ) ;
2024
+ // draw print box
2025
+ drawPrintBox ( dragCtrl . layout , layer , scale ) ;
2037
2026
}
2038
2027
} ) ;
2039
2028
$ ( '#print-menu button.btn-print-launch' ) . click ( function ( ) {
@@ -2084,121 +2073,15 @@ var lizMap = function() {
2084
2073
map . events . on ( {
2085
2074
"zoomend" : function ( ) {
2086
2075
if ( dragCtrl . active && layer . getVisibility ( ) ) {
2087
- var units = map . getUnits ( ) ;
2088
- var res = map . getResolution ( ) / 2 ;
2089
- var scale = OpenLayers . Util . getScaleFromResolution ( res , units ) ;
2090
- scale = getPrintScale ( scale ) ;
2091
- var scaleIdx = printCapabilities . scales . indexOf ( scale ) ;
2092
- if ( scaleIdx == - 1 ) {
2093
- res = map . getResolution ( ) ;
2094
- scale = OpenLayers . Util . getScaleFromResolution ( res , units ) ;
2095
- scale = getPrintScale ( scale ) ;
2096
- }
2076
+ // get scale
2077
+ var scale = getPrintScale ( printCapabilities . scales ) ;
2078
+ // update the select
2097
2079
$ ( '#print-menu select.btn-print-scales' ) . val ( scale ) ;
2098
- var center = map . getCenter ( ) ;
2099
- var size = printCapabilities . layouts [ 0 ] . size ;
2100
- var unitsRatio = OpenLayers . INCHES_PER_UNIT [ units ] ;
2101
- var w = size . width / 72 / unitsRatio * scale / 2 ;
2102
- var h = size . height / 72 / unitsRatio * scale / 2 ;
2103
- var bounds = new OpenLayers . Bounds ( center . lon - w , center . lat - h ,
2104
- center . lon + w , center . lat + h ) ;
2105
- var geom = bounds . toGeometry ( ) ;
2106
- var feat = layer . features [ 0 ] ;
2107
- geom . id = feat . geometry . id ;
2108
- feat . geometry = geom ;
2109
- layer . drawFeature ( feat ) ;
2110
- }
2111
- }
2112
- } ) ;
2113
- }
2114
-
2115
- function addComplexPrintControl ( ) {
2116
- var ptTomm = 0.35277 ; //conversion pt to mm
2117
- var printCapabilities = { scales :[ ] , layouts :[ ] } ;
2118
- for ( var i = 0 , len = composers . length ; i < len ; i ++ ) {
2119
- var composer = composers [ i ] ;
2120
- var composerMap = composer . getElementsByTagName ( 'ComposerMap' ) ;
2121
- if ( composerMap . length != 0 ) {
2122
- composerMap = composerMap [ 0 ] ;
2123
- var mapWidth = Number ( composer . getElementsByTagName ( 'ComposerMap' ) [ 0 ] . getAttribute ( 'width' ) ) / ptTomm ;
2124
- var mapHeight = Number ( composer . getElementsByTagName ( 'ComposerMap' ) [ 0 ] . getAttribute ( 'height' ) ) / ptTomm ;
2125
- //for some strange reason we need to provide a "map" and a "size" object with identical content
2126
- printCapabilities . layouts . push ( {
2127
- "name" : composer . getAttribute ( 'name' ) ,
2128
- "map" : {
2129
- "width" : mapWidth ,
2130
- "height" : mapHeight
2131
- } ,
2132
- "size" : {
2133
- "width" : mapWidth ,
2134
- "height" : mapHeight
2135
- } ,
2136
- "rotation" : true
2137
- } ) ;
2138
- }
2139
- }
2140
- var layer = map . getLayersByName ( 'Print' ) ;
2141
- if ( layer . length == 0 ) {
2142
- layer = new OpenLayers . Layer . Vector ( 'Print' ) ;
2143
- map . addLayer ( layer ) ;
2144
- layer . setVisibility ( false ) ;
2145
- } else
2146
- layer = layer [ 0 ] ;
2147
- if ( layer . features . length == 0 )
2148
- layer . addFeatures ( [
2149
- new OpenLayers . Feature . Vector (
2150
- new OpenLayers . Geometry . Polygon ( [
2151
- new OpenLayers . Geometry . LinearRing ( [
2152
- new OpenLayers . Geometry . Point ( - 1 , - 1 ) ,
2153
- new OpenLayers . Geometry . Point ( 1 , - 1 ) ,
2154
- new OpenLayers . Geometry . Point ( 1 , 1 ) ,
2155
- new OpenLayers . Geometry . Point ( - 1 , 1 )
2156
- ] )
2157
- ] )
2158
- )
2159
- ] ) ;
2160
- var transformCtrl = new OpenLayers . Control . TransformFeature ( layer , {
2161
- preserveAspectRatio : true ,
2162
- rotate : true ,
2163
- geometryTypes : [ 'OpenLayers.Geometry.Polygon' ] ,
2164
- eventListeners : {
2165
- "activate" : function ( e ) {
2166
- var units = map . getUnits ( ) ;
2167
- var res = map . getResolution ( ) / 2 ;
2168
- var scale = OpenLayers . Util . getScaleFromResolution ( res , units ) ;
2169
- var center = map . getCenter ( ) ;
2170
- var size = printCapabilities . layouts [ 0 ] . size ;
2171
- var unitsRatio = OpenLayers . INCHES_PER_UNIT [ units ] ;
2172
- var w = size . width / 72 / unitsRatio * scale / 2 ;
2173
- var h = size . height / 72 / unitsRatio * scale / 2 ;
2174
- var bounds = new OpenLayers . Bounds ( center . lon - w , center . lat - h ,
2175
- center . lon + w , center . lat + h ) ;
2176
- var geom = bounds . toGeometry ( ) ;
2177
- var feat = layer . features [ 0 ] ;
2178
- geom . id = feat . geometry . id ;
2179
- feat . geometry = geom ;
2180
- layer . setVisibility ( true ) ;
2181
- //e.object.setFeature(feat);
2182
- } ,
2183
- "deactivate" : function ( e ) {
2184
- //layer.destroyFeatures();
2185
- layer . setVisibility ( false ) ;
2186
- } ,
2187
- "beforesetfeature" : function ( e ) {
2188
- } ,
2189
- "setfeature" : function ( e ) {
2190
- } ,
2191
- "beforetransform" : function ( e ) {
2192
- } ,
2193
- "transformcomplete" : function ( e ) {
2080
+ // draw print box
2081
+ drawPrintBox ( dragCtrl . layout , layer , scale ) ;
2194
2082
}
2195
2083
}
2196
2084
} ) ;
2197
- map . addControls ( [ transformCtrl ] ) ;
2198
- controls [ 'printTransform' ] = transformCtrl ;
2199
- //pour activer il suffit de faire un setFeature
2200
- //transformCtrl.setFeature(layer.features[0]);
2201
- return true ;
2202
2085
}
2203
2086
2204
2087
function addEditionControls ( ) {
0 commit comments