Guest User

Untitled

a guest
Jan 23rd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. var format = new ol.format.WKT();
  2. var feature = format.readFeature(
  3. 'POLYGON((10.689697265625 -25.0927734375, 34.595947265625 ' +
  4. '-20.1708984375, 38.814697265625 -35.6396484375, 13.502197265625 ' +
  5. '-39.1552734375, 10.689697265625 -25.0927734375))');
  6. feature.getGeometry().transform('EPSG:4326', 'EPSG:3857');
  7.  
  8. var vector = new ol.layer.Vector({
  9. source: new ol.source.Vector({
  10. features: [feature]
  11. })
  12. });
  13.  
  14.  
  15. var map = new ol.Map({
  16. layers: [raster, vector],
  17. target: 'map',
  18. controls: ol.control.defaults({
  19. attributionOptions: {
  20. collapsible: false
  21. }
  22. }),
  23. view: new ol.View({
  24. center: [0, 0],
  25. zoom: 2
  26. })
  27. });
  28.  
  29.  
  30. var dims = {
  31. a0: [1189, 841],
  32. a1: [841, 594],
  33. a2: [594, 420],
  34. a3: [420, 297],
  35. a4: [297, 210],
  36. a5: [210, 148]
  37. };
  38.  
  39. var loading = 0;
  40. var loaded = 0;
  41.  
  42. var exportButton = document.getElementById('export-pdf');
  43.  
  44. exportButton.addEventListener('click', function() {
  45.  
  46. exportButton.disabled = true;
  47. document.body.style.cursor = 'progress';
  48.  
  49. var format = document.getElementById('format').value;
  50. var resolution = document.getElementById('resolution').value;
  51. var dim = dims[format];
  52. var width = Math.round(dim[0] * resolution / 25.4);
  53. var height = Math.round(dim[1] * resolution / 25.4);
  54. var size = /** @type {ol.Size} */ (map.getSize());
  55. var extent = map.getView().calculateExtent(size);
  56.  
  57. var source = raster.getSource();
  58.  
  59. var tileLoadStart = function() {
  60. ++loading;
  61. };
  62.  
  63. var tileLoadEnd = function() {
  64. ++loaded;
  65. if (loading === loaded) {
  66. var canvas = this;
  67. window.setTimeout(function() {
  68. loading = 0;
  69. loaded = 0;
  70. var data = canvas.toDataURL('image/png');
  71. var pdf = new jsPDF('landscape', undefined, format);
  72. pdf.addImage(data, 'JPEG', 0, 0, dim[0], dim[1]);
  73. pdf.save('map.pdf');
  74. source.un('tileloadstart', tileLoadStart);
  75. source.un('tileloadend', tileLoadEnd, canvas);
  76. source.un('tileloaderror', tileLoadEnd, canvas);
  77. map.setSize(size);
  78. map.getView().fit(extent);
  79. map.renderSync();
  80. exportButton.disabled = false;
  81. document.body.style.cursor = 'auto';
  82. }, 100);
  83. }
  84. };
  85.  
  86. map.once('postcompose', function(event) {
  87. source.on('tileloadstart', tileLoadStart);
  88. source.on('tileloadend', tileLoadEnd, event.context.canvas);
  89. source.on('tileloaderror', tileLoadEnd, event.context.canvas);
  90. });
  91.  
  92. map.setSize([width, height]);
  93. map.getView().fit(extent);
  94. map.renderSync();
  95.  
  96. }, false);
  97. </script>
Add Comment
Please, Sign In to add comment