ol 7.1.1-pr.14101.2 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/AssertionError.d.ts.map +1 -1
  2. package/AssertionError.js +1 -0
  3. package/DataTile.d.ts +34 -11
  4. package/DataTile.d.ts.map +1 -1
  5. package/DataTile.js +84 -7
  6. package/Feature.d.ts +3 -3
  7. package/Feature.js +3 -3
  8. package/Geolocation.d.ts +34 -27
  9. package/Geolocation.d.ts.map +1 -1
  10. package/Geolocation.js +30 -12
  11. package/Map.d.ts +19 -6
  12. package/Map.d.ts.map +1 -1
  13. package/Map.js +70 -43
  14. package/MapBrowserEventHandler.d.ts.map +1 -1
  15. package/MapBrowserEventHandler.js +9 -13
  16. package/Overlay.d.ts +1 -1
  17. package/Overlay.js +1 -1
  18. package/README.md +9 -1
  19. package/Tile.d.ts +2 -2
  20. package/Tile.js +1 -1
  21. package/TileCache.d.ts.map +1 -1
  22. package/TileCache.js +6 -8
  23. package/array.d.ts +2 -2
  24. package/array.d.ts.map +1 -1
  25. package/array.js +4 -4
  26. package/console.d.ts +13 -0
  27. package/console.d.ts.map +1 -0
  28. package/console.js +54 -0
  29. package/control/MousePosition.d.ts +12 -0
  30. package/control/MousePosition.d.ts.map +1 -1
  31. package/control/MousePosition.js +14 -0
  32. package/coordinate.d.ts +11 -11
  33. package/coordinate.js +11 -11
  34. package/dist/ol.js +1 -3
  35. package/dist/ol.js.map +1 -1
  36. package/featureloader.d.ts.map +1 -1
  37. package/featureloader.js +0 -1
  38. package/format/KML.js +3 -1
  39. package/geom/flat/interiorpoint.js +2 -2
  40. package/interaction/DragPan.d.ts.map +1 -1
  41. package/interaction/DragPan.js +3 -2
  42. package/interaction/Draw.d.ts.map +1 -1
  43. package/interaction/Draw.js +11 -14
  44. package/interaction/KeyboardPan.d.ts.map +1 -1
  45. package/interaction/KeyboardPan.js +0 -1
  46. package/interaction/KeyboardZoom.d.ts.map +1 -1
  47. package/interaction/KeyboardZoom.js +0 -1
  48. package/interaction/Link.d.ts +14 -0
  49. package/interaction/Link.d.ts.map +1 -1
  50. package/interaction/Link.js +37 -6
  51. package/interaction/Modify.d.ts +10 -10
  52. package/interaction/Modify.d.ts.map +1 -1
  53. package/interaction/Modify.js +15 -15
  54. package/interaction/PinchRotate.d.ts.map +1 -1
  55. package/interaction/PinchRotate.js +3 -5
  56. package/interaction/PinchZoom.d.ts.map +1 -1
  57. package/interaction/PinchZoom.js +3 -5
  58. package/interaction/Pointer.d.ts +5 -2
  59. package/interaction/Pointer.d.ts.map +1 -1
  60. package/interaction/Pointer.js +2 -2
  61. package/interaction/Select.d.ts.map +1 -1
  62. package/interaction/Select.js +4 -5
  63. package/interaction/Snap.d.ts +1 -1
  64. package/interaction/Snap.d.ts.map +1 -1
  65. package/interaction/Snap.js +17 -23
  66. package/interaction/Translate.d.ts +12 -11
  67. package/interaction/Translate.d.ts.map +1 -1
  68. package/interaction/Translate.js +16 -13
  69. package/layer/BaseVector.js +1 -1
  70. package/layer/Graticule.d.ts.map +1 -1
  71. package/layer/Graticule.js +4 -4
  72. package/layer/Heatmap.js +10 -10
  73. package/layer/Layer.d.ts +2 -2
  74. package/layer/Layer.d.ts.map +1 -1
  75. package/layer/Layer.js +2 -2
  76. package/layer/VectorTile.js +1 -1
  77. package/package.json +2 -2
  78. package/proj.d.ts +2 -4
  79. package/proj.d.ts.map +1 -1
  80. package/proj.js +4 -6
  81. package/render/canvas/ExecutorGroup.d.ts.map +1 -1
  82. package/render/canvas/ExecutorGroup.js +6 -4
  83. package/render/canvas/Immediate.d.ts +5 -0
  84. package/render/canvas/Immediate.d.ts.map +1 -1
  85. package/render/canvas/Immediate.js +15 -0
  86. package/render/canvas/hitdetect.d.ts +4 -3
  87. package/render/canvas/hitdetect.d.ts.map +1 -1
  88. package/render/canvas/hitdetect.js +23 -11
  89. package/render/webgl/BatchRenderer.d.ts.map +1 -1
  90. package/render/webgl/BatchRenderer.js +2 -3
  91. package/render/webgl/LineStringBatchRenderer.d.ts.map +1 -1
  92. package/render/webgl/LineStringBatchRenderer.js +2 -4
  93. package/render/webgl/PointBatchRenderer.d.ts.map +1 -1
  94. package/render/webgl/PointBatchRenderer.js +2 -4
  95. package/render/webgl/PolygonBatchRenderer.d.ts.map +1 -1
  96. package/render/webgl/PolygonBatchRenderer.js +2 -4
  97. package/render.d.ts +3 -3
  98. package/render.d.ts.map +1 -1
  99. package/render.js +6 -4
  100. package/renderer/Layer.d.ts +2 -2
  101. package/renderer/Layer.d.ts.map +1 -1
  102. package/renderer/Layer.js +3 -4
  103. package/renderer/canvas/Layer.d.ts.map +1 -1
  104. package/renderer/canvas/Layer.js +3 -4
  105. package/renderer/canvas/TileLayer.js +2 -2
  106. package/renderer/canvas/VectorImageLayer.d.ts +6 -0
  107. package/renderer/canvas/VectorImageLayer.d.ts.map +1 -1
  108. package/renderer/canvas/VectorImageLayer.js +22 -25
  109. package/renderer/canvas/VectorLayer.d.ts +9 -2
  110. package/renderer/canvas/VectorLayer.d.ts.map +1 -1
  111. package/renderer/canvas/VectorLayer.js +87 -93
  112. package/renderer/canvas/VectorTileLayer.js +84 -84
  113. package/renderer/webgl/PointsLayer.d.ts.map +1 -1
  114. package/renderer/webgl/PointsLayer.js +10 -13
  115. package/renderer/webgl/TileLayer.d.ts.map +1 -1
  116. package/renderer/webgl/TileLayer.js +2 -4
  117. package/reproj/DataTile.d.ts +75 -17
  118. package/reproj/DataTile.d.ts.map +1 -1
  119. package/reproj/DataTile.js +121 -120
  120. package/reproj/Tile.d.ts +3 -3
  121. package/reproj/Tile.d.ts.map +1 -1
  122. package/reproj/Tile.js +37 -41
  123. package/reproj/Triangulation.d.ts.map +1 -1
  124. package/reproj/Triangulation.js +42 -44
  125. package/source/BingMaps.d.ts.map +1 -1
  126. package/source/BingMaps.js +33 -38
  127. package/source/DataTile.d.ts +5 -3
  128. package/source/DataTile.d.ts.map +1 -1
  129. package/source/DataTile.js +24 -20
  130. package/source/GeoTIFF.d.ts +10 -7
  131. package/source/GeoTIFF.d.ts.map +1 -1
  132. package/source/GeoTIFF.js +49 -20
  133. package/source/Image.d.ts +8 -0
  134. package/source/Image.d.ts.map +1 -1
  135. package/source/Image.js +13 -11
  136. package/source/OGCMapTile.d.ts +1 -0
  137. package/source/OGCMapTile.d.ts.map +1 -1
  138. package/source/OGCMapTile.js +3 -1
  139. package/source/OGCVectorTile.d.ts +1 -0
  140. package/source/OGCVectorTile.d.ts.map +1 -1
  141. package/source/OGCVectorTile.js +3 -1
  142. package/source/Raster.d.ts +16 -0
  143. package/source/Raster.d.ts.map +1 -1
  144. package/source/Raster.js +47 -7
  145. package/source/Source.d.ts +2 -2
  146. package/source/Source.d.ts.map +1 -1
  147. package/source/Source.js +3 -4
  148. package/source/Stamen.js +2 -2
  149. package/source/Tile.d.ts.map +1 -1
  150. package/source/Tile.js +7 -3
  151. package/source/TileImage.d.ts +2 -2
  152. package/source/TileImage.d.ts.map +1 -1
  153. package/source/TileImage.js +3 -4
  154. package/source/UTFGrid.d.ts.map +1 -1
  155. package/source/UTFGrid.js +3 -6
  156. package/source/Vector.d.ts +6 -6
  157. package/source/Vector.js +13 -13
  158. package/source/VectorTile.d.ts.map +1 -1
  159. package/source/VectorTile.js +5 -9
  160. package/source/Zoomify.d.ts.map +1 -1
  161. package/source/Zoomify.js +4 -7
  162. package/style/Icon.d.ts +51 -0
  163. package/style/Icon.d.ts.map +1 -1
  164. package/style/Icon.js +119 -0
  165. package/style/IconImage.d.ts.map +1 -1
  166. package/style/IconImage.js +3 -1
  167. package/style/Image.d.ts.map +1 -1
  168. package/style/Image.js +1 -0
  169. package/style/Style.d.ts +2 -2
  170. package/style/Style.js +2 -2
  171. package/style/expressions.js +5 -10
  172. package/tilegrid/TileGrid.d.ts.map +1 -1
  173. package/tilegrid/TileGrid.js +7 -12
  174. package/util.d.ts.map +1 -1
  175. package/util.js +1 -1
  176. package/webgl/Helper.d.ts +4 -0
  177. package/webgl/Helper.d.ts.map +1 -1
  178. package/webgl/Helper.js +78 -79
  179. package/webgl/PostProcessingPass.d.ts +2 -2
  180. package/webgl/PostProcessingPass.d.ts.map +1 -1
  181. package/webgl/PostProcessingPass.js +7 -9
  182. package/webgl/ShaderBuilder.d.ts +1 -1
  183. package/webgl/ShaderBuilder.js +1 -1
  184. package/webgl/TileTexture.d.ts +19 -2
  185. package/webgl/TileTexture.d.ts.map +1 -1
  186. package/webgl/TileTexture.js +93 -46
  187. package/worker/webgl.js +1 -1
  188. package/layer/STAC.d.ts +0 -257
  189. package/layer/STAC.d.ts.map +0 -1
  190. package/layer/STAC.js +0 -312
package/Map.js CHANGED
@@ -30,17 +30,19 @@ import {assert} from './asserts.js';
30
30
  import {
31
31
  clone,
32
32
  createOrUpdateEmpty,
33
- equals,
33
+ equals as equalsExtent,
34
34
  getForViewAndSize,
35
35
  isEmpty,
36
36
  } from './extent.js';
37
37
  import {defaults as defaultControls} from './control/defaults.js';
38
38
  import {defaults as defaultInteractions} from './interaction/defaults.js';
39
+ import {equals} from './array.js';
39
40
  import {fromUserCoordinate, toUserCoordinate} from './proj.js';
40
41
  import {getUid} from './util.js';
41
42
  import {hasArea} from './size.js';
42
43
  import {listen, unlistenByKey} from './events.js';
43
44
  import {removeNode} from './dom.js';
45
+ import {warn} from './console.js';
44
46
 
45
47
  /**
46
48
  * State of the current frame. Only `pixelRatio`, `time` and `viewState` should
@@ -145,6 +147,7 @@ import {removeNode} from './dom.js';
145
147
  * element itself or the `id` of the element. If not specified at construction
146
148
  * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be
147
149
  * rendered. If passed by element, the container can be in a secondary document.
150
+ * **Note:** CSS `transform` support for the target element is limited to `scale`.
148
151
  * @property {View|Promise<import("./View.js").ViewOptions>} [view] The map's view. No layer sources will be
149
152
  * fetched unless this is specified at construction time or through
150
153
  * {@link module:ol/Map~Map#setView}.
@@ -185,10 +188,10 @@ function setLayerMapProperty(layer, map) {
185
188
  * The map is the core component of OpenLayers. For a map to render, a view,
186
189
  * one or more layers, and a target container are needed:
187
190
  *
188
- * import Map from 'ol/Map';
189
- * import View from 'ol/View';
190
- * import TileLayer from 'ol/layer/Tile';
191
- * import OSM from 'ol/source/OSM';
191
+ * import Map from 'ol/Map.js';
192
+ * import View from 'ol/View.js';
193
+ * import TileLayer from 'ol/layer/Tile.js';
194
+ * import OSM from 'ol/source/OSM.js';
192
195
  *
193
196
  * const map = new Map({
194
197
  * view: new View({
@@ -417,6 +420,17 @@ class Map extends BaseObject {
417
420
  */
418
421
  this.targetChangeHandlerKeys_ = null;
419
422
 
423
+ /**
424
+ * @private
425
+ * @type {HTMLElement|null}
426
+ */
427
+ this.targetElement_ = null;
428
+
429
+ /**
430
+ * @type {ResizeObserver}
431
+ */
432
+ this.resizeObserver_ = new ResizeObserver(() => this.updateSize());
433
+
420
434
  /**
421
435
  * @type {Collection<import("./control/Control.js").default>}
422
436
  * @protected
@@ -491,9 +505,9 @@ class Map extends BaseObject {
491
505
  /**
492
506
  * @param {import("./Collection.js").CollectionEvent<import("./control/Control.js").default>} event CollectionEvent
493
507
  */
494
- function (event) {
508
+ (event) => {
495
509
  event.element.setMap(this);
496
- }.bind(this)
510
+ }
497
511
  );
498
512
 
499
513
  this.controls.addEventListener(
@@ -501,9 +515,9 @@ class Map extends BaseObject {
501
515
  /**
502
516
  * @param {import("./Collection.js").CollectionEvent<import("./control/Control.js").default>} event CollectionEvent.
503
517
  */
504
- function (event) {
518
+ (event) => {
505
519
  event.element.setMap(null);
506
- }.bind(this)
520
+ }
507
521
  );
508
522
 
509
523
  this.interactions.addEventListener(
@@ -511,9 +525,9 @@ class Map extends BaseObject {
511
525
  /**
512
526
  * @param {import("./Collection.js").CollectionEvent<import("./interaction/Interaction.js").default>} event CollectionEvent.
513
527
  */
514
- function (event) {
528
+ (event) => {
515
529
  event.element.setMap(this);
516
- }.bind(this)
530
+ }
517
531
  );
518
532
 
519
533
  this.interactions.addEventListener(
@@ -521,9 +535,9 @@ class Map extends BaseObject {
521
535
  /**
522
536
  * @param {import("./Collection.js").CollectionEvent<import("./interaction/Interaction.js").default>} event CollectionEvent.
523
537
  */
524
- function (event) {
538
+ (event) => {
525
539
  event.element.setMap(null);
526
- }.bind(this)
540
+ }
527
541
  );
528
542
 
529
543
  this.overlays_.addEventListener(
@@ -531,9 +545,9 @@ class Map extends BaseObject {
531
545
  /**
532
546
  * @param {import("./Collection.js").CollectionEvent<import("./Overlay.js").default>} event CollectionEvent.
533
547
  */
534
- function (event) {
548
+ (event) => {
535
549
  this.addOverlayInternal_(event.element);
536
- }.bind(this)
550
+ }
537
551
  );
538
552
 
539
553
  this.overlays_.addEventListener(
@@ -541,33 +555,31 @@ class Map extends BaseObject {
541
555
  /**
542
556
  * @param {import("./Collection.js").CollectionEvent<import("./Overlay.js").default>} event CollectionEvent.
543
557
  */
544
- function (event) {
558
+ (event) => {
545
559
  const id = event.element.getId();
546
560
  if (id !== undefined) {
547
561
  delete this.overlayIdIndex_[id.toString()];
548
562
  }
549
563
  event.element.setMap(null);
550
- }.bind(this)
564
+ }
551
565
  );
552
566
 
553
567
  this.controls.forEach(
554
568
  /**
555
569
  * @param {import("./control/Control.js").default} control Control.
556
- * @this {Map}
557
570
  */
558
- function (control) {
571
+ (control) => {
559
572
  control.setMap(this);
560
- }.bind(this)
573
+ }
561
574
  );
562
575
 
563
576
  this.interactions.forEach(
564
577
  /**
565
578
  * @param {import("./interaction/Interaction.js").default} interaction Interaction.
566
- * @this {Map}
567
579
  */
568
- function (interaction) {
580
+ (interaction) => {
569
581
  interaction.setMap(this);
570
- }.bind(this)
582
+ }
571
583
  );
572
584
 
573
585
  this.overlays_.forEach(this.addOverlayInternal_.bind(this));
@@ -645,6 +657,7 @@ class Map extends BaseObject {
645
657
  this.controls.clear();
646
658
  this.interactions.clear();
647
659
  this.overlays_.clear();
660
+ this.resizeObserver_.disconnect();
648
661
  this.setTarget(null);
649
662
  super.disposeInternal();
650
663
  }
@@ -780,12 +793,16 @@ class Map extends BaseObject {
780
793
 
781
794
  /**
782
795
  * Returns the map pixel position for a browser event relative to the viewport.
783
- * @param {UIEvent} event Event.
796
+ * @param {UIEvent|{clientX: number, clientY: number}} event Event.
784
797
  * @return {import("./pixel.js").Pixel} Pixel.
785
798
  * @api
786
799
  */
787
800
  getEventPixel(event) {
788
- const viewportPosition = this.viewport_.getBoundingClientRect();
801
+ const viewport = this.viewport_;
802
+ const viewportPosition = viewport.getBoundingClientRect();
803
+ const viewportSize = this.getSize();
804
+ const scaleX = viewportPosition.width / viewportSize[0];
805
+ const scaleY = viewportPosition.height / viewportSize[1];
789
806
  const eventPosition =
790
807
  //FIXME Are we really calling this with a TouchEvent anywhere?
791
808
  'changedTouches' in event
@@ -793,8 +810,8 @@ class Map extends BaseObject {
793
810
  : /** @type {MouseEvent} */ (event);
794
811
 
795
812
  return [
796
- eventPosition.clientX - viewportPosition.left,
797
- eventPosition.clientY - viewportPosition.top,
813
+ (eventPosition.clientX - viewportPosition.left) / scaleX,
814
+ (eventPosition.clientY - viewportPosition.top) / scaleY,
798
815
  ];
799
816
  }
800
817
 
@@ -821,13 +838,7 @@ class Map extends BaseObject {
821
838
  * @api
822
839
  */
823
840
  getTargetElement() {
824
- const target = this.getTarget();
825
- if (target !== undefined) {
826
- return typeof target === 'string'
827
- ? document.getElementById(target)
828
- : target;
829
- }
830
- return null;
841
+ return this.targetElement_;
831
842
  }
832
843
 
833
844
  /**
@@ -1242,12 +1253,23 @@ class Map extends BaseObject {
1242
1253
  removeNode(this.viewport_);
1243
1254
  }
1244
1255
 
1256
+ if (this.targetElement_) {
1257
+ this.resizeObserver_.unobserve(this.targetElement_);
1258
+ const rootNode = this.targetElement_.getRootNode();
1259
+ if (rootNode instanceof ShadowRoot) {
1260
+ this.resizeObserver_.unobserve(rootNode.host);
1261
+ }
1262
+ }
1263
+
1245
1264
  // target may be undefined, null, a string or an Element.
1246
1265
  // If it's a string we convert it to an Element before proceeding.
1247
1266
  // If it's not now an Element we remove the viewport from the DOM.
1248
1267
  // If it's an Element we append the viewport element to it.
1249
1268
 
1250
- const targetElement = this.getTargetElement();
1269
+ const target = this.getTarget();
1270
+ const targetElement =
1271
+ typeof target === 'string' ? document.getElementById(target) : target;
1272
+ this.targetElement_ = targetElement;
1251
1273
  if (!targetElement) {
1252
1274
  if (this.renderer_) {
1253
1275
  clearTimeout(this.postRenderTimeoutHandle_);
@@ -1287,7 +1309,6 @@ class Map extends BaseObject {
1287
1309
  PASSIVE_EVENT_LISTENERS ? {passive: false} : false
1288
1310
  );
1289
1311
 
1290
- const defaultView = this.getOwnerDocument().defaultView;
1291
1312
  const keyboardEventTarget = !this.keyboardEventTarget_
1292
1313
  ? targetElement
1293
1314
  : this.keyboardEventTarget_;
@@ -1304,8 +1325,12 @@ class Map extends BaseObject {
1304
1325
  this.handleBrowserEvent,
1305
1326
  this
1306
1327
  ),
1307
- listen(defaultView, EventType.RESIZE, this.updateSize, this),
1308
1328
  ];
1329
+ const rootNode = targetElement.getRootNode();
1330
+ if (rootNode instanceof ShadowRoot) {
1331
+ this.resizeObserver_.observe(rootNode.host);
1332
+ }
1333
+ this.resizeObserver_.observe(targetElement);
1309
1334
  }
1310
1335
 
1311
1336
  this.updateSize();
@@ -1555,7 +1580,7 @@ class Map extends BaseObject {
1555
1580
  const moveStart =
1556
1581
  !this.previousExtent_ ||
1557
1582
  (!isEmpty(this.previousExtent_) &&
1558
- !equals(frameState.extent, this.previousExtent_));
1583
+ !equalsExtent(frameState.extent, this.previousExtent_));
1559
1584
  if (moveStart) {
1560
1585
  this.dispatchEvent(
1561
1586
  new MapEvent(MapEventType.MOVESTART, this, previousFrameState)
@@ -1568,7 +1593,7 @@ class Map extends BaseObject {
1568
1593
  this.previousExtent_ &&
1569
1594
  !frameState.viewHints[ViewHint.ANIMATING] &&
1570
1595
  !frameState.viewHints[ViewHint.INTERACTING] &&
1571
- !equals(frameState.extent, this.previousExtent_);
1596
+ !equalsExtent(frameState.extent, this.previousExtent_);
1572
1597
 
1573
1598
  if (idle) {
1574
1599
  this.dispatchEvent(
@@ -1687,16 +1712,18 @@ class Map extends BaseObject {
1687
1712
  targetElement.getClientRects().length
1688
1713
  )
1689
1714
  ) {
1690
- // eslint-disable-next-line
1691
- console.warn(
1715
+ warn(
1692
1716
  "No map visible because the map container's width or height are 0."
1693
1717
  );
1694
1718
  }
1695
1719
  }
1696
1720
  }
1697
1721
 
1698
- this.setSize(size);
1699
- this.updateViewportSize_();
1722
+ const oldSize = this.getSize();
1723
+ if (size && (!oldSize || !equals(size, oldSize))) {
1724
+ this.setSize(size);
1725
+ this.updateViewportSize_();
1726
+ }
1700
1727
  }
1701
1728
 
1702
1729
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MapBrowserEventHandler.d.ts","sourceRoot":"","sources":["MapBrowserEventHandler.js"],"names":[],"mappings":";AAaA;IACE;;;OAGG;IACH,iBAHW,OAAO,UAAU,EAAE,OAAO,sCAyGpC;IAnGC;;;;OAIG;IACH,aAAe;IAEf;;;OAGG;IACH,wBAAoB;IAEpB;;;OAGG;IACH,gBAFU,OAAO,CAEU;IAE3B;;;OAGG;IACH,kBAAsB;IAEtB;;;OAGG;IACH,0BAA2B;IAE3B;;;OAGG;IACH,uBAAqE;IAErE;;;;;OAKG;IACH,cAAiB;IAIjB;;;OAGG;IACH,wBAAyB;IAEzB;;;OAGG;IACH,wBAAyB;IAEzB,sBAAuB;IAEvB;;;OAGG;IACH,gCAKC;IAED;;;OAGG;IACH,kCAA8B;IAE9B;;;OAGG;IACH,4BAKC;IAED;;OAEG;IACH,8BAA6D;IAS/D;;;;OAIG;IACH,sBAiCC;IAED;;;;;;OAMG;IACH,8BA0BC;IAED;;;;OAIG;IACH,yBAiCC;IAED;;;;;OAKG;IACH,6BAEC;IAED;;;;OAIG;IACH,2BA6DC;IAED;;;;OAIG;IACH,2BAiBC;IAED;;;;;OAKG;IACH,wBAWC;IAED;;;;;;;OAOG;IACH,yBAUC;IAED;;;;;OAKG;IACH,kBAOC;CA0BF"}
1
+ {"version":3,"file":"MapBrowserEventHandler.d.ts","sourceRoot":"","sources":["MapBrowserEventHandler.js"],"names":[],"mappings":";AAaA;IACE;;;OAGG;IACH,iBAHW,OAAO,UAAU,EAAE,OAAO,sCAyGpC;IAnGC;;;;OAIG;IACH,aAAe;IAEf;;;OAGG;IACH,wBAAoB;IAEpB;;;OAGG;IACH,gBAFU,OAAO,CAEU;IAE3B;;;OAGG;IACH,kBAAsB;IAEtB;;;OAGG;IACH,0BAA2B;IAE3B;;;OAGG;IACH,uBAAqE;IAErE;;;;;OAKG;IACH,cAAiB;IAIjB;;;OAGG;IACH,wBAAyB;IAEzB;;;OAGG;IACH,wBAAyB;IAEzB,sBAAuB;IAEvB;;;OAGG;IACH,gCAKC;IAED;;;OAGG;IACH,kCAA8B;IAE9B;;;OAGG;IACH,4BAKC;IAED;;OAEG;IACH,8BAA6D;IAS/D;;;;OAIG;IACH,sBA6BC;IAED;;;;;;OAMG;IACH,8BA0BC;IAED;;;;OAIG;IACH,yBAiCC;IAED;;;;;OAKG;IACH,6BAEC;IAED;;;;OAIG;IACH,2BA6DC;IAED;;;;OAIG;IACH,2BAiBC;IAED;;;;;OAKG;IACH,wBAWC;IAED;;;;;;;OAOG;IACH,yBAUC;IAED;;;;;OAKG;IACH,kBAOC;CA0BF"}
@@ -144,19 +144,15 @@ class MapBrowserEventHandler extends Target {
144
144
  this.dispatchEvent(newEvent);
145
145
  } else {
146
146
  // click
147
- this.clickTimeoutId_ = setTimeout(
148
- /** @this {MapBrowserEventHandler} */
149
- function () {
150
- this.clickTimeoutId_ = undefined;
151
- const newEvent = new MapBrowserEvent(
152
- MapBrowserEventType.SINGLECLICK,
153
- this.map_,
154
- pointerEvent
155
- );
156
- this.dispatchEvent(newEvent);
157
- }.bind(this),
158
- 250
159
- );
147
+ this.clickTimeoutId_ = setTimeout(() => {
148
+ this.clickTimeoutId_ = undefined;
149
+ const newEvent = new MapBrowserEvent(
150
+ MapBrowserEventType.SINGLECLICK,
151
+ this.map_,
152
+ pointerEvent
153
+ );
154
+ this.dispatchEvent(newEvent);
155
+ }, 250);
160
156
  }
161
157
  }
162
158
 
package/Overlay.d.ts CHANGED
@@ -112,7 +112,7 @@ export type OverlayOnSignature<Return> = import("./Observable").OnSignature<impo
112
112
  *
113
113
  * Example:
114
114
  *
115
- * import Overlay from 'ol/Overlay';
115
+ * import Overlay from 'ol/Overlay.js';
116
116
  *
117
117
  * // ...
118
118
  * const popup = new Overlay({
package/Overlay.js CHANGED
@@ -98,7 +98,7 @@ const Property = {
98
98
  *
99
99
  * Example:
100
100
  *
101
- * import Overlay from 'ol/Overlay';
101
+ * import Overlay from 'ol/Overlay.js';
102
102
  *
103
103
  * // ...
104
104
  * const popup = new Overlay({
package/README.md CHANGED
@@ -76,7 +76,15 @@ OpenLayers appreciates contributions of all kinds. We especially want to thank
76
76
 
77
77
  > We develop leading Physical Security Information Management (PSIM) software.
78
78
  > OpenLayers is the core of our map engine and we love it!
79
- > https://elacompil.recruitee.com/
79
+ > https://ela.pl/
80
+
81
+ <br>
82
+
83
+ [![Ubigu Oy logo](./sponsor-logos/ubigu-oy.svg)](https://www.ubigu.fi/)
84
+
85
+ > We advance holistic utilization and availability of spatial information,
86
+ > for a better planned, built and managed society.
87
+ > https://www.ubigu.fi/
80
88
 
81
89
  <br>
82
90
 
package/Tile.d.ts CHANGED
@@ -11,7 +11,7 @@ export default Tile;
11
11
  * error handling:
12
12
  *
13
13
  * ```js
14
- * import TileState from 'ol/TileState';
14
+ * import TileState from 'ol/TileState.js';
15
15
  *
16
16
  * source.setTileLoadFunction(function(tile, src) {
17
17
  * const xhr = new XMLHttpRequest();
@@ -68,7 +68,7 @@ export type Options = {
68
68
  * error handling:
69
69
  *
70
70
  * ```js
71
- * import TileState from 'ol/TileState';
71
+ * import TileState from 'ol/TileState.js';
72
72
  *
73
73
  * source.setTileLoadFunction(function(tile, src) {
74
74
  * const xhr = new XMLHttpRequest();
package/Tile.js CHANGED
@@ -19,7 +19,7 @@ import {easeIn} from './easing.js';
19
19
  * error handling:
20
20
  *
21
21
  * ```js
22
- * import TileState from 'ol/TileState';
22
+ * import TileState from 'ol/TileState.js';
23
23
  *
24
24
  * source.setTileLoadFunction(function(tile, src) {
25
25
  * const xhr = new XMLHttpRequest();
@@ -1 +1 @@
1
- {"version":3,"file":"TileCache.d.ts","sourceRoot":"","sources":["TileCache.js"],"names":[],"mappings":";AAMA;IAuBM,gDAqBuK;IApC3K;;OAEG;IACH;YAFmB,MAAM,GAAE,OAAO;aAWjC;IAED;;OAEG;IACH,2BAeC;CACF"}
1
+ {"version":3,"file":"TileCache.d.ts","sourceRoot":"","sources":["TileCache.js"],"names":[],"mappings":";AAMA;IAuBM,gDAmB8M;IAlClN;;OAEG;IACH;YAFmB,MAAM,GAAE,OAAO;aAWjC;IAED;;OAEG;IACH,2BAaC;CACF"}
package/TileCache.js CHANGED
@@ -36,14 +36,12 @@ class TileCache extends LRUCache {
36
36
  const key = this.peekFirstKey();
37
37
  const tileCoord = fromKey(key);
38
38
  const z = tileCoord[0];
39
- this.forEach(
40
- function (tile) {
41
- if (tile.tileCoord[0] !== z) {
42
- this.remove(getKey(tile.tileCoord));
43
- tile.release();
44
- }
45
- }.bind(this)
46
- );
39
+ this.forEach((tile) => {
40
+ if (tile.tileCoord[0] !== z) {
41
+ this.remove(getKey(tile.tileCoord));
42
+ tile.release();
43
+ }
44
+ });
47
45
  }
48
46
  }
49
47
 
package/array.d.ts CHANGED
@@ -12,13 +12,13 @@
12
12
  */
13
13
  export function binarySearch(haystack: Array<any>, needle: any, comparator?: Function | undefined): number;
14
14
  /**
15
- * Compare function for array sort that is safe for numbers.
15
+ * Compare function sorting arrays in ascending order. Safe to use for numeric values.
16
16
  * @param {*} a The first object to be compared.
17
17
  * @param {*} b The second object to be compared.
18
18
  * @return {number} A negative number, zero, or a positive number as the first
19
19
  * argument is less than, equal to, or greater than the second.
20
20
  */
21
- export function numberSafeCompareFunction(a: any, b: any): number;
21
+ export function ascending(a: any, b: any): number;
22
22
  /**
23
23
  * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function
24
24
  * of this type to determine which nearest resolution to use.
package/array.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["array.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,uCALW,UAAQ,mDAGP,MAAM,CA2BjB;AAED;;;;;;GAMG;AACH,2DAHY,MAAM,CAKjB;AAED;;;;;;;;;;;;GAYG;AAEH;;;;;;;;GAQG;AACH,uCARW,MAAM,MAAM,CAAC,UACb,MAAM,aACN,MAAM,GAAC,wBAAwB,GAI9B,MAAM,CAwCjB;AAED;;;;GAIG;AACH,qCAJW,UAAQ,SACR,MAAM,OACN,MAAM,QAUhB;AAED;;;;GAIG;AACH,yEAMC;AAED;;;;;GAKG;AACH,yDAFY,OAAO,CASlB;AAED;;;;GAIG;AACH,6BAJW,QAAM,iBAAiB,QACvB,QAAM,iBAAiB,GACtB,OAAO,CAalB;AAED;;;;;;GAMG;AACH,gCAJW,UAAQ,wCACS,MAAM,QAgBjC;AAED;;;;;GAKG;AACH,8BALW,UAAQ,8DAGP,OAAO,CAWlB;;;;;;;;;;;;8CAvJqB,MAAM,QAAE,MAAM,QAAE,MAAM,KAAG,MAAM"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["array.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,uCALW,UAAQ,mDAGP,MAAM,CA2BjB;AAED;;;;;;GAMG;AACH,2CAHY,MAAM,CAKjB;AAED;;;;;;;;;;;;GAYG;AAEH;;;;;;;;GAQG;AACH,uCARW,MAAM,MAAM,CAAC,UACb,MAAM,aACN,MAAM,GAAC,wBAAwB,GAI9B,MAAM,CAwCjB;AAED;;;;GAIG;AACH,qCAJW,UAAQ,SACR,MAAM,OACN,MAAM,QAUhB;AAED;;;;GAIG;AACH,yEAMC;AAED;;;;;GAKG;AACH,yDAFY,OAAO,CASlB;AAED;;;;GAIG;AACH,6BAJW,QAAM,iBAAiB,QACvB,QAAM,iBAAiB,GACtB,OAAO,CAalB;AAED;;;;;;GAMG;AACH,gCAJW,UAAQ,wCACS,MAAM,QAgBjC;AAED;;;;;GAKG;AACH,8BALW,UAAQ,8DAGP,OAAO,CAWlB;;;;;;;;;;;;8CAvJqB,MAAM,QAAE,MAAM,QAAE,MAAM,KAAG,MAAM"}
package/array.js CHANGED
@@ -13,7 +13,7 @@
13
13
  */
14
14
  export function binarySearch(haystack, needle, comparator) {
15
15
  let mid, cmp;
16
- comparator = comparator || numberSafeCompareFunction;
16
+ comparator = comparator || ascending;
17
17
  let low = 0;
18
18
  let high = haystack.length;
19
19
  let found = false;
@@ -39,13 +39,13 @@ export function binarySearch(haystack, needle, comparator) {
39
39
  }
40
40
 
41
41
  /**
42
- * Compare function for array sort that is safe for numbers.
42
+ * Compare function sorting arrays in ascending order. Safe to use for numeric values.
43
43
  * @param {*} a The first object to be compared.
44
44
  * @param {*} b The second object to be compared.
45
45
  * @return {number} A negative number, zero, or a positive number as the first
46
46
  * argument is less than, equal to, or greater than the second.
47
47
  */
48
- export function numberSafeCompareFunction(a, b) {
48
+ export function ascending(a, b) {
49
49
  return a > b ? 1 : a < b ? -1 : 0;
50
50
  }
51
51
 
@@ -202,7 +202,7 @@ export function stableSort(arr, compareFnc) {
202
202
  * @return {boolean} Return index.
203
203
  */
204
204
  export function isSorted(arr, func, strict) {
205
- const compare = func || numberSafeCompareFunction;
205
+ const compare = func || ascending;
206
206
  return arr.every(function (currentVal, index) {
207
207
  if (index === 0) {
208
208
  return true;
package/console.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Set the logging level. By default, the level is set to 'info' and all
3
+ * messages will be logged. Set to 'warn' to only display warnings and errors.
4
+ * Set to 'error' to only display errors. Set to 'none' to silence all messages.
5
+ *
6
+ * @param {Level} l The new level.
7
+ */
8
+ export function setLevel(l: Level): void;
9
+ export function log(...args: any[]): void;
10
+ export function warn(...args: any[]): void;
11
+ export function error(...args: any[]): void;
12
+ export type Level = 'info' | 'warn' | 'error' | 'none';
13
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["console.js"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,4BAFW,KAAK,QAIf;AAED,0CAKC;AAED,2CAKC;AAED,4CAKC;oBAhDY,MAAM,GAAC,MAAM,GAAC,OAAO,GAAC,MAAM"}
package/console.js ADDED
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @module ol/console
3
+ */
4
+
5
+ /**
6
+ * @typedef {'info'|'warn'|'error'|'none'} Level
7
+ */
8
+
9
+ /**
10
+ * @type {Object<Level, number>}
11
+ */
12
+ const levels = {
13
+ info: 1,
14
+ warn: 2,
15
+ error: 3,
16
+ none: 4,
17
+ };
18
+
19
+ /**
20
+ * @type {number}
21
+ */
22
+ let level = levels.info;
23
+
24
+ /**
25
+ * Set the logging level. By default, the level is set to 'info' and all
26
+ * messages will be logged. Set to 'warn' to only display warnings and errors.
27
+ * Set to 'error' to only display errors. Set to 'none' to silence all messages.
28
+ *
29
+ * @param {Level} l The new level.
30
+ */
31
+ export function setLevel(l) {
32
+ level = levels[l];
33
+ }
34
+
35
+ export function log(...args) {
36
+ if (level > levels.info) {
37
+ return;
38
+ }
39
+ console.log(...args); // eslint-disable-line no-console
40
+ }
41
+
42
+ export function warn(...args) {
43
+ if (level > levels.warn) {
44
+ return;
45
+ }
46
+ console.warn(...args); // eslint-disable-line no-console
47
+ }
48
+
49
+ export function error(...args) {
50
+ if (level > levels.error) {
51
+ return;
52
+ }
53
+ console.error(...args); // eslint-disable-line no-console
54
+ }
@@ -35,6 +35,11 @@ export type Options = {
35
35
  * placeholder.
36
36
  */
37
37
  placeholder?: string | undefined;
38
+ /**
39
+ * Wrap the world horizontally on the projection's antimeridian, if it
40
+ * is a global projection.
41
+ */
42
+ wrapX?: boolean | undefined;
38
43
  };
39
44
  /***
40
45
  * @template Return
@@ -59,6 +64,8 @@ export type Options = {
59
64
  * initially and the last position is retained when the mouse leaves the viewport.
60
65
  * When a string is provided (e.g. `'no position'` or `''` for an empty string) it is used as a
61
66
  * placeholder.
67
+ * @property {boolean} [wrapX=true] Wrap the world horizontally on the projection's antimeridian, if it
68
+ * is a global projection.
62
69
  */
63
70
  /**
64
71
  * @classdesc
@@ -114,6 +121,11 @@ declare class MousePosition extends Control {
114
121
  * @type {?import("../proj.js").TransformFunction}
115
122
  */
116
123
  private transform_;
124
+ /**
125
+ * @private
126
+ * @type {boolean}
127
+ */
128
+ private wrapX_;
117
129
  /**
118
130
  * @private
119
131
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MousePosition.d.ts","sourceRoot":"","sources":["MousePosition.js"],"names":[],"mappings":";;;;+CA0Ba,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,GACjI,OAAW,eAAe,EAAE,WAAW,CAAC,OAAO,oBAAoB,EAAE,KAAK,GAC1E,yBAA+B,GAAC,mBAAmB,EAAE,OAAO,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,GAC7F,OAAW,eAAe,EAAE,mBAAmB,CAAC,OAAO,eAAe,EAAE,UAAU,GAAC,OAAO,oBAAoB,EAAE,KAAK,GACrH,yBAA+B,GAAC,mBAAmB,EAAE,MAAM,CAAC;;;;;;;;;;;;;iBAO/C,OAAO,YAAY,EAAE,cAAc;;;;;;qBAC1B,OAAO,gBAAgB,EAAE,OAAO,KAAE,IAAI;;;;;;;;;;;;;;;AAd7D;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;GAWG;AACH;IACE;;OAEG;IACH,2CAkEC;IArDC;;OAEG;IACH,IAFU,yBAAyB,OAAO,WAAW,EAAE,SAAS,CAAC,CAE1D;IAEP;;OAEG;IACH,MAFU,yBAAyB,OAAO,WAAW,EAAE,SAAS,CAAC,CAExD;IAET;;OAEG;IACH,IAFU,yBAAyB,IAAI,CAAC,CAEjC;IAWP;;;OAGG;IACH,0BAA0D;IAE1D;;;OAGG;IACH,qBAA2E;IAE3E;;;OAGG;IACH,sBAAsC;IAEtC;;;OAGG;IACH,uBAA0B;IAE1B;;;OAGG;IACH,mBAAsB;IAGxB;;OAEG;IACH,iCAEC;IAED;;;;;;;OAOG;IACH,uBALY,OAAO,kBAAkB,EAAE,gBAAgB,GAAC,SAAS,CAShE;IAED;;;;;;OAMG;IACH,iBALY,OAAO,uBAAuB,EAAE,OAAO,GAAC,SAAS,CAS5D;IAED;;;OAGG;IACH,iCAHW,UAAU,QAMpB;IAED;;;OAGG;IACH,gCAHW,KAAK,QAKf;IA0BD;;;;;;OAMG;IACH,4BALW,OAAO,kBAAkB,EAAE,gBAAgB,QAOrD;IAED;;;;;;OAMG;IACH,0BALW,OAAO,YAAY,EAAE,cAAc,QAO7C;IAED;;;OAGG;IACH,oBAqCC;CAmBF"}
1
+ {"version":3,"file":"MousePosition.d.ts","sourceRoot":"","sources":["MousePosition.js"],"names":[],"mappings":";;;;+CA2Ba,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,GACjI,OAAW,eAAe,EAAE,WAAW,CAAC,OAAO,oBAAoB,EAAE,KAAK,GAC1E,yBAA+B,GAAC,mBAAmB,EAAE,OAAO,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,GAC7F,OAAW,eAAe,EAAE,mBAAmB,CAAC,OAAO,eAAe,EAAE,UAAU,GAAC,OAAO,oBAAoB,EAAE,KAAK,GACrH,yBAA+B,GAAC,mBAAmB,EAAE,MAAM,CAAC;;;;;;;;;;;;;iBAO/C,OAAO,YAAY,EAAE,cAAc;;;;;;qBAC1B,OAAO,gBAAgB,EAAE,OAAO,KAAE,IAAI;;;;;;;;;;;;;;;;;;;;AAd7D;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;GAWG;AACH;IACE;;OAEG;IACH,2CAwEC;IA3DC;;OAEG;IACH,IAFU,yBAAyB,OAAO,WAAW,EAAE,SAAS,CAAC,CAE1D;IAEP;;OAEG;IACH,MAFU,yBAAyB,OAAO,WAAW,EAAE,SAAS,CAAC,CAExD;IAET;;OAEG;IACH,IAFU,yBAAyB,IAAI,CAAC,CAEjC;IAWP;;;OAGG;IACH,0BAA0D;IAE1D;;;OAGG;IACH,qBAA2E;IAE3E;;;OAGG;IACH,sBAAsC;IAEtC;;;OAGG;IACH,uBAA0B;IAE1B;;;OAGG;IACH,mBAAsB;IAEtB;;;OAGG;IACH,eAAoD;IAGtD;;OAEG;IACH,iCAEC;IAED;;;;;;;OAOG;IACH,uBALY,OAAO,kBAAkB,EAAE,gBAAgB,GAAC,SAAS,CAShE;IAED;;;;;;OAMG;IACH,iBALY,OAAO,uBAAuB,EAAE,OAAO,GAAC,SAAS,CAS5D;IAED;;;OAGG;IACH,iCAHW,UAAU,QAMpB;IAED;;;OAGG;IACH,gCAHW,KAAK,QAKf;IA0BD;;;;;;OAMG;IACH,4BALW,OAAO,kBAAkB,EAAE,gBAAgB,QAOrD;IAED;;;;;;OAMG;IACH,0BALW,OAAO,YAAY,EAAE,cAAc,QAO7C;IAED;;;OAGG;IACH,oBA0CC;CAmBF"}
@@ -11,6 +11,7 @@ import {
11
11
  identityTransform,
12
12
  } from '../proj.js';
13
13
  import {listen} from '../events.js';
14
+ import {wrapX} from '../coordinate.js';
14
15
 
15
16
  /**
16
17
  * @type {string}
@@ -46,6 +47,8 @@ const COORDINATE_FORMAT = 'coordinateFormat';
46
47
  * initially and the last position is retained when the mouse leaves the viewport.
47
48
  * When a string is provided (e.g. `'no position'` or `''` for an empty string) it is used as a
48
49
  * placeholder.
50
+ * @property {boolean} [wrapX=true] Wrap the world horizontally on the projection's antimeridian, if it
51
+ * is a global projection.
49
52
  */
50
53
 
51
54
  /**
@@ -130,6 +133,12 @@ class MousePosition extends Control {
130
133
  * @type {?import("../proj.js").TransformFunction}
131
134
  */
132
135
  this.transform_ = null;
136
+
137
+ /**
138
+ * @private
139
+ * @type {boolean}
140
+ */
141
+ this.wrapX_ = options.wrapX === false ? false : true;
133
142
  }
134
143
 
135
144
  /**
@@ -258,6 +267,11 @@ class MousePosition extends Control {
258
267
  );
259
268
  }
260
269
  this.transform_(coordinate, coordinate);
270
+ if (this.wrapX_) {
271
+ const projection =
272
+ userProjection || this.getProjection() || this.mapProjection_;
273
+ wrapX(coordinate, projection);
274
+ }
261
275
  const coordinateFormat = this.getCoordinateFormat();
262
276
  if (coordinateFormat) {
263
277
  html = coordinateFormat(coordinate);