@vaadin/bundles 25.0.0-alpha3 → 25.0.0-alpha5
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.
- package/node_modules_ol_ImageCanvas_js.js +76 -83
- package/node_modules_ol_ImageCanvas_js.js.map +1 -1
- package/node_modules_ol_TileRange_js.js +128 -110
- package/node_modules_ol_TileRange_js.js.map +1 -1
- package/node_modules_ol_Tile_js.js +279 -0
- package/node_modules_ol_Tile_js.js.map +1 -0
- package/node_modules_ol_VectorRenderTile_js.js +428 -143
- package/node_modules_ol_VectorRenderTile_js.js.map +1 -1
- package/node_modules_ol_VectorTile_js.js +405 -119
- package/node_modules_ol_VectorTile_js.js.map +1 -1
- package/node_modules_ol_control_MousePosition_js.js +327 -0
- package/node_modules_ol_control_MousePosition_js.js.map +1 -0
- package/node_modules_ol_control_ZoomToExtent_js.js +118 -0
- package/node_modules_ol_control_ZoomToExtent_js.js.map +1 -0
- package/node_modules_ol_events_SnapEvent_js.js +79 -0
- package/node_modules_ol_events_SnapEvent_js.js.map +1 -0
- package/node_modules_ol_featureloader_js.js +205 -0
- package/node_modules_ol_featureloader_js.js.map +1 -0
- package/node_modules_ol_geom_Circle_js.js +300 -0
- package/node_modules_ol_geom_Circle_js.js.map +1 -0
- package/node_modules_ol_geom_GeometryCollection_js.js +369 -0
- package/node_modules_ol_geom_GeometryCollection_js.js.map +1 -0
- package/node_modules_ol_geom_MultiPoint_js.js +228 -0
- package/node_modules_ol_geom_MultiPoint_js.js.map +1 -0
- package/node_modules_ol_geom_flat_center_js.js +47 -0
- package/node_modules_ol_geom_flat_center_js.js.map +1 -0
- package/node_modules_ol_geom_flat_geodesic_js.js +123 -88
- package/node_modules_ol_geom_flat_geodesic_js.js.map +1 -1
- package/node_modules_ol_geom_flat_interpolate_js.js +230 -0
- package/node_modules_ol_geom_flat_interpolate_js.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a0.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a0.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a1.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a1.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a2.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a2.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a3.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a3.js.map +1 -0
- package/node_modules_ol_geom_flat_length_js-_375a4.js +58 -0
- package/node_modules_ol_geom_flat_length_js-_375a4.js.map +1 -0
- package/node_modules_ol_geom_flat_linechunk_js.js +76 -0
- package/node_modules_ol_geom_flat_linechunk_js.js.map +1 -0
- package/node_modules_ol_geom_flat_straightchunk_js.js +68 -0
- package/node_modules_ol_geom_flat_straightchunk_js.js.map +1 -0
- package/node_modules_ol_geom_flat_textpath_js.js +178 -0
- package/node_modules_ol_geom_flat_textpath_js.js.map +1 -0
- package/node_modules_ol_interaction_DblClickDragZoom_js.js +285 -0
- package/node_modules_ol_interaction_DblClickDragZoom_js.js.map +1 -0
- package/node_modules_ol_interaction_DragAndDrop_js.js +351 -0
- package/node_modules_ol_interaction_DragAndDrop_js.js.map +1 -0
- package/node_modules_ol_interaction_DragRotateAndZoom_js.js +159 -0
- package/node_modules_ol_interaction_DragRotateAndZoom_js.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49290.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49290.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49291.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49291.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49292.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49292.js.map +1 -0
- package/node_modules_ol_layer_Vector_js-_49293.js +110 -0
- package/node_modules_ol_layer_Vector_js-_49293.js.map +1 -0
- package/node_modules_ol_loadingstrategy_js.js +95 -0
- package/node_modules_ol_loadingstrategy_js.js.map +1 -0
- package/node_modules_ol_render_VectorContext_js-_3ad60.js +144 -0
- package/node_modules_ol_render_VectorContext_js-_3ad60.js.map +1 -0
- package/node_modules_ol_render_VectorContext_js-_3ad61.js +144 -0
- package/node_modules_ol_render_VectorContext_js-_3ad61.js.map +1 -0
- package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js +372 -0
- package/node_modules_ol_render_VectorContext_js-node_modules_ol_render_canvas_hitdetect_js.js.map +1 -0
- package/node_modules_ol_render_canvas_ImageBuilder_js.js +318 -0
- package/node_modules_ol_render_canvas_ImageBuilder_js.js.map +1 -0
- package/node_modules_ol_render_canvas_Instruction_js.js +66 -0
- package/node_modules_ol_render_canvas_Instruction_js.js.map +1 -0
- package/node_modules_ol_render_canvas_LineStringBuilder_js.js +187 -0
- package/node_modules_ol_render_canvas_LineStringBuilder_js.js.map +1 -0
- package/node_modules_ol_render_canvas_PolygonBuilder_js.js +276 -0
- package/node_modules_ol_render_canvas_PolygonBuilder_js.js.map +1 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js +156 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab20.js.map +1 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js +156 -0
- package/node_modules_ol_render_canvas_ZIndexContext_js-_fab21.js.map +1 -0
- package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js +301 -0
- package/node_modules_ol_render_js-node_modules_ol_render_VectorContext_js.js.map +1 -0
- package/node_modules_ol_renderer_Layer_js.js +219 -0
- package/node_modules_ol_renderer_Layer_js.js.map +1 -0
- package/node_modules_ol_source_Source_js.js +256 -0
- package/node_modules_ol_source_Source_js.js.map +1 -0
- package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js +318 -0
- package/node_modules_ol_source_VectorEventType_js-node_modules_ol_structs_RBush_js.js.map +1 -0
- package/node_modules_ol_source_VectorEventType_js.js +80 -0
- package/node_modules_ol_source_VectorEventType_js.js.map +1 -0
- package/node_modules_ol_structs_RBush_js.js +242 -0
- package/node_modules_ol_structs_RBush_js.js.map +1 -0
- package/node_modules_ol_style_js.js +2 -1
- package/node_modules_ol_style_js.js.map +1 -1
- package/node_modules_rbush_rbush_min_js.js +16 -0
- package/node_modules_rbush_rbush_min_js.js.map +1 -0
- package/package.json +142 -146
- package/vaadin-bundle.json +2447 -2352
- package/vaadin.js +52246 -63791
- package/vaadin.js.map +1 -1
- package/vendors-node_modules_dompurify_dist_purify_es_mjs.js +1364 -0
- package/vendors-node_modules_dompurify_dist_purify_es_mjs.js.map +1 -0
- package/vendors-node_modules_dompurify_dist_purify_js.js +26 -21
- package/vendors-node_modules_dompurify_dist_purify_js.js.map +1 -1
- package/vendors-node_modules_marked_lib_marked_esm_js.js +2205 -0
- package/vendors-node_modules_marked_lib_marked_esm_js.js.map +1 -0
- package/vendors-node_modules_marked_lib_marked_umd_js.js +2164 -2556
- package/vendors-node_modules_marked_lib_marked_umd_js.js.map +1 -1
- package/vendors-node_modules_ol_Feature_js.js +360 -0
- package/vendors-node_modules_ol_Feature_js.js.map +1 -0
- package/vendors-node_modules_ol_Geolocation_js.js +352 -293
- package/vendors-node_modules_ol_Geolocation_js.js.map +1 -1
- package/vendors-node_modules_ol_ImageTile_js.js +494 -0
- package/vendors-node_modules_ol_ImageTile_js.js.map +1 -0
- package/vendors-node_modules_ol_Overlay_js.js +606 -0
- package/vendors-node_modules_ol_Overlay_js.js.map +1 -0
- package/vendors-node_modules_ol_control_FullScreen_js.js +417 -0
- package/vendors-node_modules_ol_control_FullScreen_js.js.map +1 -0
- package/vendors-node_modules_ol_control_OverviewMap_js.js +711 -0
- package/vendors-node_modules_ol_control_OverviewMap_js.js.map +1 -0
- package/vendors-node_modules_ol_control_ScaleLine_js.js +509 -0
- package/vendors-node_modules_ol_control_ScaleLine_js.js.map +1 -0
- package/vendors-node_modules_ol_control_ZoomSlider_js.js +418 -0
- package/vendors-node_modules_ol_control_ZoomSlider_js.js.map +1 -0
- package/vendors-node_modules_ol_control_js.js +490 -0
- package/vendors-node_modules_ol_control_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_LineString_js.js +574 -0
- package/vendors-node_modules_ol_geom_LineString_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_MultiLineString_js.js +405 -0
- package/vendors-node_modules_ol_geom_MultiLineString_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_MultiPolygon_js.js +773 -0
- package/vendors-node_modules_ol_geom_MultiPolygon_js.js.map +1 -0
- package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js +769 -0
- package/vendors-node_modules_ol_geom_js-node_modules_ol_geom_flat_length_js.js.map +1 -0
- package/vendors-node_modules_ol_index_js.js +526 -675
- package/vendors-node_modules_ol_index_js.js.map +1 -1
- package/vendors-node_modules_ol_interaction_Draw_js.js +2777 -0
- package/vendors-node_modules_ol_interaction_Draw_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Extent_js.js +586 -0
- package/vendors-node_modules_ol_interaction_Extent_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Link_js.js +489 -0
- package/vendors-node_modules_ol_interaction_Link_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Modify_js.js +1841 -0
- package/vendors-node_modules_ol_interaction_Modify_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Select_js.js +623 -0
- package/vendors-node_modules_ol_interaction_Select_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Snap_js.js +982 -0
- package/vendors-node_modules_ol_interaction_Snap_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_Translate_js.js +466 -0
- package/vendors-node_modules_ol_interaction_Translate_js.js.map +1 -0
- package/vendors-node_modules_ol_interaction_js.js +872 -0
- package/vendors-node_modules_ol_interaction_js.js.map +1 -0
- package/vendors-node_modules_ol_layer_Graticule_js.js +1374 -989
- package/vendors-node_modules_ol_layer_Graticule_js.js.map +1 -1
- package/vendors-node_modules_ol_render_Feature_js.js +546 -0
- package/vendors-node_modules_ol_render_Feature_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js +897 -0
- package/vendors-node_modules_ol_render_canvas_BuilderGroup_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_Builder_js.js +907 -0
- package/vendors-node_modules_ol_render_canvas_Builder_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js +539 -0
- package/vendors-node_modules_ol_render_canvas_ExecutorGroup_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_Executor_js.js +1715 -0
- package/vendors-node_modules_ol_render_canvas_Executor_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_Immediate_js.js +1208 -0
- package/vendors-node_modules_ol_render_canvas_Immediate_js.js.map +1 -0
- package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js +825 -0
- package/vendors-node_modules_ol_render_canvas_TextBuilder_js.js.map +1 -0
- package/vendors-node_modules_ol_renderer_canvas_Layer_js.js +654 -0
- package/vendors-node_modules_ol_renderer_canvas_Layer_js.js.map +1 -0
- package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js +1044 -0
- package/vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js.map +1 -0
- package/vendors-node_modules_ol_renderer_vector_js.js +460 -0
- package/vendors-node_modules_ol_renderer_vector_js.js.map +1 -0
- package/vendors-node_modules_ol_source_Vector_js.js +2091 -0
- package/vendors-node_modules_ol_source_Vector_js.js.map +1 -0
- package/node_modules_ol_ImageTile_js.js +0 -177
- package/node_modules_ol_ImageTile_js.js.map +0 -1
- package/node_modules_ol_render_js.js +0 -131
- package/node_modules_ol_render_js.js.map +0 -1
- package/node_modules_ol_structs_LRUCache_js.js +0 -275
- package/node_modules_ol_structs_LRUCache_js.js.map +0 -1
- package/node_modules_ol_tilecoord_js.js +0 -115
- package/node_modules_ol_tilecoord_js.js.map +0 -1
- package/vendors-node_modules_ol_TileCache_js.js +0 -461
- package/vendors-node_modules_ol_TileCache_js.js.map +0 -1
- package/vendors-node_modules_ol_Tile_js.js +0 -330
- package/vendors-node_modules_ol_Tile_js.js.map +0 -1
- package/vendors-node_modules_ol_style_Text_js.js +0 -509
- package/vendors-node_modules_ol_style_Text_js.js.map +0 -1
- package/vendors-node_modules_rbush_index_js.js +0 -531
- package/vendors-node_modules_rbush_index_js.js.map +0 -1
|
@@ -0,0 +1,1044 @@
|
|
|
1
|
+
(self["webpackChunk_vaadin_bundles"] = self["webpackChunk_vaadin_bundles"] || []).push([["vendors-node_modules_ol_renderer_canvas_VectorLayer_js"],{
|
|
2
|
+
|
|
3
|
+
/***/ "./node_modules/ol/render/canvas/hitdetect.js":
|
|
4
|
+
/*!****************************************************!*\
|
|
5
|
+
!*** ./node_modules/ol/render/canvas/hitdetect.js ***!
|
|
6
|
+
\****************************************************/
|
|
7
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
8
|
+
|
|
9
|
+
__webpack_require__.r(__webpack_exports__);
|
|
10
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11
|
+
/* harmony export */ "HIT_DETECT_RESOLUTION": () => (/* binding */ HIT_DETECT_RESOLUTION),
|
|
12
|
+
/* harmony export */ "createHitDetectionImageData": () => (/* binding */ createHitDetectionImageData),
|
|
13
|
+
/* harmony export */ "hitDetect": () => (/* binding */ hitDetect)
|
|
14
|
+
/* harmony export */ });
|
|
15
|
+
/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../array.js */ "./node_modules/ol/array.js");
|
|
16
|
+
/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../dom.js */ "./node_modules/ol/dom.js");
|
|
17
|
+
/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../extent.js */ "./node_modules/ol/extent.js");
|
|
18
|
+
/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../math.js */ "./node_modules/ol/math.js");
|
|
19
|
+
/* harmony import */ var _proj_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../proj.js */ "./node_modules/ol/proj.js");
|
|
20
|
+
/* harmony import */ var _style_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../style.js */ "./node_modules/ol/style/Icon.js");
|
|
21
|
+
/* harmony import */ var _Immediate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Immediate.js */ "./node_modules/ol/render/canvas/Immediate.js");
|
|
22
|
+
/**
|
|
23
|
+
* @module ol/render/canvas/hitdetect
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
const HIT_DETECT_RESOLUTION = 0.5;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @param {import("../../size.js").Size} size Canvas size in css pixels.
|
|
38
|
+
* @param {Array<import("../../transform.js").Transform>} transforms Transforms
|
|
39
|
+
* for rendering features to all worlds of the viewport, from coordinates to css
|
|
40
|
+
* pixels.
|
|
41
|
+
* @param {Array<import("../../Feature.js").FeatureLike>} features
|
|
42
|
+
* Features to consider for hit detection.
|
|
43
|
+
* @param {import("../../style/Style.js").StyleFunction|undefined} styleFunction
|
|
44
|
+
* Layer style function.
|
|
45
|
+
* @param {import("../../extent.js").Extent} extent Extent in render projection.
|
|
46
|
+
* @param {number} resolution Resolution.
|
|
47
|
+
* @param {number} rotation Rotation.
|
|
48
|
+
* @param {number} [squaredTolerance] Squared tolerance.
|
|
49
|
+
* @param {import("../../proj/Projection.js").default} [projection] Render projection.
|
|
50
|
+
* @return {ImageData} Hit detection image data.
|
|
51
|
+
*/
|
|
52
|
+
function createHitDetectionImageData(
|
|
53
|
+
size,
|
|
54
|
+
transforms,
|
|
55
|
+
features,
|
|
56
|
+
styleFunction,
|
|
57
|
+
extent,
|
|
58
|
+
resolution,
|
|
59
|
+
rotation,
|
|
60
|
+
squaredTolerance,
|
|
61
|
+
projection,
|
|
62
|
+
) {
|
|
63
|
+
const userExtent = projection ? (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserExtent)(extent, projection) : extent;
|
|
64
|
+
const width = size[0] * HIT_DETECT_RESOLUTION;
|
|
65
|
+
const height = size[1] * HIT_DETECT_RESOLUTION;
|
|
66
|
+
const context = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.createCanvasContext2D)(width, height);
|
|
67
|
+
context.imageSmoothingEnabled = false;
|
|
68
|
+
const canvas = context.canvas;
|
|
69
|
+
const renderer = new _Immediate_js__WEBPACK_IMPORTED_MODULE_2__["default"](
|
|
70
|
+
context,
|
|
71
|
+
HIT_DETECT_RESOLUTION,
|
|
72
|
+
extent,
|
|
73
|
+
null,
|
|
74
|
+
rotation,
|
|
75
|
+
squaredTolerance,
|
|
76
|
+
projection
|
|
77
|
+
? (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getTransformFromProjections)((0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getUserProjection)(), projection)
|
|
78
|
+
: null,
|
|
79
|
+
);
|
|
80
|
+
const featureCount = features.length;
|
|
81
|
+
// Stretch hit detection index to use the whole available color range
|
|
82
|
+
const indexFactor = Math.floor((256 * 256 * 256 - 1) / featureCount);
|
|
83
|
+
const featuresByZIndex = {};
|
|
84
|
+
for (let i = 1; i <= featureCount; ++i) {
|
|
85
|
+
const feature = features[i - 1];
|
|
86
|
+
const featureStyleFunction = feature.getStyleFunction() || styleFunction;
|
|
87
|
+
if (!featureStyleFunction) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
let styles = featureStyleFunction(feature, resolution);
|
|
91
|
+
if (!styles) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (!Array.isArray(styles)) {
|
|
95
|
+
styles = [styles];
|
|
96
|
+
}
|
|
97
|
+
const index = i * indexFactor;
|
|
98
|
+
const color = index.toString(16).padStart(7, '#00000');
|
|
99
|
+
for (let j = 0, jj = styles.length; j < jj; ++j) {
|
|
100
|
+
const originalStyle = styles[j];
|
|
101
|
+
const geometry = originalStyle.getGeometryFunction()(feature);
|
|
102
|
+
if (!geometry || !(0,_extent_js__WEBPACK_IMPORTED_MODULE_3__.intersects)(userExtent, geometry.getExtent())) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const style = originalStyle.clone();
|
|
106
|
+
const fill = style.getFill();
|
|
107
|
+
if (fill) {
|
|
108
|
+
fill.setColor(color);
|
|
109
|
+
}
|
|
110
|
+
const stroke = style.getStroke();
|
|
111
|
+
if (stroke) {
|
|
112
|
+
stroke.setColor(color);
|
|
113
|
+
stroke.setLineDash(null);
|
|
114
|
+
}
|
|
115
|
+
style.setText(undefined);
|
|
116
|
+
const image = originalStyle.getImage();
|
|
117
|
+
if (image) {
|
|
118
|
+
const imgSize = image.getImageSize();
|
|
119
|
+
if (!imgSize) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const imgContext = (0,_dom_js__WEBPACK_IMPORTED_MODULE_1__.createCanvasContext2D)(
|
|
124
|
+
imgSize[0],
|
|
125
|
+
imgSize[1],
|
|
126
|
+
undefined,
|
|
127
|
+
{alpha: false},
|
|
128
|
+
);
|
|
129
|
+
const img = imgContext.canvas;
|
|
130
|
+
imgContext.fillStyle = color;
|
|
131
|
+
imgContext.fillRect(0, 0, img.width, img.height);
|
|
132
|
+
style.setImage(
|
|
133
|
+
new _style_js__WEBPACK_IMPORTED_MODULE_4__["default"]({
|
|
134
|
+
img: img,
|
|
135
|
+
anchor: image.getAnchor(),
|
|
136
|
+
anchorXUnits: 'pixels',
|
|
137
|
+
anchorYUnits: 'pixels',
|
|
138
|
+
offset: image.getOrigin(),
|
|
139
|
+
opacity: 1,
|
|
140
|
+
size: image.getSize(),
|
|
141
|
+
scale: image.getScale(),
|
|
142
|
+
rotation: image.getRotation(),
|
|
143
|
+
rotateWithView: image.getRotateWithView(),
|
|
144
|
+
}),
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
const zIndex = style.getZIndex() || 0;
|
|
148
|
+
let byGeometryType = featuresByZIndex[zIndex];
|
|
149
|
+
if (!byGeometryType) {
|
|
150
|
+
byGeometryType = {};
|
|
151
|
+
featuresByZIndex[zIndex] = byGeometryType;
|
|
152
|
+
byGeometryType['Polygon'] = [];
|
|
153
|
+
byGeometryType['Circle'] = [];
|
|
154
|
+
byGeometryType['LineString'] = [];
|
|
155
|
+
byGeometryType['Point'] = [];
|
|
156
|
+
}
|
|
157
|
+
const type = geometry.getType();
|
|
158
|
+
if (type === 'GeometryCollection') {
|
|
159
|
+
const geometries =
|
|
160
|
+
/** @type {import("../../geom/GeometryCollection.js").default} */ (
|
|
161
|
+
geometry
|
|
162
|
+
).getGeometriesArrayRecursive();
|
|
163
|
+
for (let i = 0, ii = geometries.length; i < ii; ++i) {
|
|
164
|
+
const geometry = geometries[i];
|
|
165
|
+
byGeometryType[geometry.getType().replace('Multi', '')].push(
|
|
166
|
+
geometry,
|
|
167
|
+
style,
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
} else {
|
|
171
|
+
byGeometryType[type.replace('Multi', '')].push(geometry, style);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const zIndexKeys = Object.keys(featuresByZIndex).map(Number).sort(_array_js__WEBPACK_IMPORTED_MODULE_5__.ascending);
|
|
177
|
+
for (let i = 0, ii = zIndexKeys.length; i < ii; ++i) {
|
|
178
|
+
const byGeometryType = featuresByZIndex[zIndexKeys[i]];
|
|
179
|
+
for (const type in byGeometryType) {
|
|
180
|
+
const geomAndStyle = byGeometryType[type];
|
|
181
|
+
for (let j = 0, jj = geomAndStyle.length; j < jj; j += 2) {
|
|
182
|
+
renderer.setStyle(geomAndStyle[j + 1]);
|
|
183
|
+
for (let k = 0, kk = transforms.length; k < kk; ++k) {
|
|
184
|
+
renderer.setTransform(transforms[k]);
|
|
185
|
+
renderer.drawGeometry(geomAndStyle[j]);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return context.getImageData(0, 0, canvas.width, canvas.height);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @param {import("../../pixel").Pixel} pixel Pixel coordinate on the hit
|
|
195
|
+
* detection canvas in css pixels.
|
|
196
|
+
* @param {Array<F>} features Features. Has to
|
|
197
|
+
* match the `features` array that was passed to `createHitDetectionImageData()`.
|
|
198
|
+
* @param {ImageData} imageData Hit detection image data generated by
|
|
199
|
+
* `createHitDetectionImageData()`.
|
|
200
|
+
* @return {Array<F>} Features.
|
|
201
|
+
* @template {import("../../Feature.js").FeatureLike} F
|
|
202
|
+
*/
|
|
203
|
+
function hitDetect(pixel, features, imageData) {
|
|
204
|
+
/** @type {Array<F>} */
|
|
205
|
+
const resultFeatures = [];
|
|
206
|
+
if (imageData) {
|
|
207
|
+
const x = Math.floor(Math.round(pixel[0]) * HIT_DETECT_RESOLUTION);
|
|
208
|
+
const y = Math.floor(Math.round(pixel[1]) * HIT_DETECT_RESOLUTION);
|
|
209
|
+
// The pixel coordinate is clamped down to the hit-detect canvas' size to account
|
|
210
|
+
// for browsers returning coordinates slightly larger than the actual canvas size
|
|
211
|
+
// due to a non-integer pixel ratio.
|
|
212
|
+
const index =
|
|
213
|
+
((0,_math_js__WEBPACK_IMPORTED_MODULE_6__.clamp)(x, 0, imageData.width - 1) +
|
|
214
|
+
(0,_math_js__WEBPACK_IMPORTED_MODULE_6__.clamp)(y, 0, imageData.height - 1) * imageData.width) *
|
|
215
|
+
4;
|
|
216
|
+
const r = imageData.data[index];
|
|
217
|
+
const g = imageData.data[index + 1];
|
|
218
|
+
const b = imageData.data[index + 2];
|
|
219
|
+
const i = b + 256 * (g + 256 * r);
|
|
220
|
+
const indexFactor = Math.floor((256 * 256 * 256 - 1) / features.length);
|
|
221
|
+
if (i && i % indexFactor === 0) {
|
|
222
|
+
resultFeatures.push(features[i / indexFactor - 1]);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return resultFeatures;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
/***/ }),
|
|
230
|
+
|
|
231
|
+
/***/ "./node_modules/ol/renderer/canvas/VectorLayer.js":
|
|
232
|
+
/*!********************************************************!*\
|
|
233
|
+
!*** ./node_modules/ol/renderer/canvas/VectorLayer.js ***!
|
|
234
|
+
\********************************************************/
|
|
235
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
236
|
+
|
|
237
|
+
__webpack_require__.r(__webpack_exports__);
|
|
238
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
239
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
240
|
+
/* harmony export */ });
|
|
241
|
+
/* harmony import */ var _ViewHint_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ViewHint.js */ "./node_modules/ol/ViewHint.js");
|
|
242
|
+
/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../array.js */ "./node_modules/ol/array.js");
|
|
243
|
+
/* harmony import */ var _coordinate_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../coordinate.js */ "./node_modules/ol/coordinate.js");
|
|
244
|
+
/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../dom.js */ "./node_modules/ol/dom.js");
|
|
245
|
+
/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../extent.js */ "./node_modules/ol/extent.js");
|
|
246
|
+
/* harmony import */ var _proj_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../proj.js */ "./node_modules/ol/proj.js");
|
|
247
|
+
/* harmony import */ var _render_EventType_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../render/EventType.js */ "./node_modules/ol/render/EventType.js");
|
|
248
|
+
/* harmony import */ var _render_canvas_BuilderGroup_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../render/canvas/BuilderGroup.js */ "./node_modules/ol/render/canvas/BuilderGroup.js");
|
|
249
|
+
/* harmony import */ var _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../render/canvas/ExecutorGroup.js */ "./node_modules/ol/render/canvas/ExecutorGroup.js");
|
|
250
|
+
/* harmony import */ var _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../render/canvas/hitdetect.js */ "./node_modules/ol/render/canvas/hitdetect.js");
|
|
251
|
+
/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../util.js */ "./node_modules/ol/util.js");
|
|
252
|
+
/* harmony import */ var _vector_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../vector.js */ "./node_modules/ol/renderer/vector.js");
|
|
253
|
+
/* harmony import */ var _Layer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Layer.js */ "./node_modules/ol/renderer/canvas/Layer.js");
|
|
254
|
+
/**
|
|
255
|
+
* @module ol/renderer/canvas/VectorLayer
|
|
256
|
+
*/
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* @classdesc
|
|
273
|
+
* Canvas renderer for vector layers.
|
|
274
|
+
* @api
|
|
275
|
+
*/
|
|
276
|
+
class CanvasVectorLayerRenderer extends _Layer_js__WEBPACK_IMPORTED_MODULE_1__["default"] {
|
|
277
|
+
/**
|
|
278
|
+
* @param {import("../../layer/BaseVector.js").default} vectorLayer Vector layer.
|
|
279
|
+
*/
|
|
280
|
+
constructor(vectorLayer) {
|
|
281
|
+
super(vectorLayer);
|
|
282
|
+
|
|
283
|
+
/** @private */
|
|
284
|
+
this.boundHandleStyleImageChange_ = this.handleStyleImageChange_.bind(this);
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* @private
|
|
288
|
+
* @type {boolean}
|
|
289
|
+
*/
|
|
290
|
+
this.animatingOrInteracting_;
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* @private
|
|
294
|
+
* @type {ImageData|null}
|
|
295
|
+
*/
|
|
296
|
+
this.hitDetectionImageData_ = null;
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* @private
|
|
300
|
+
* @type {boolean}
|
|
301
|
+
*/
|
|
302
|
+
this.clipped_ = false;
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* @private
|
|
306
|
+
* @type {Array<import("../../Feature.js").default>}
|
|
307
|
+
*/
|
|
308
|
+
this.renderedFeatures_ = null;
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* @private
|
|
312
|
+
* @type {number}
|
|
313
|
+
*/
|
|
314
|
+
this.renderedRevision_ = -1;
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* @private
|
|
318
|
+
* @type {number}
|
|
319
|
+
*/
|
|
320
|
+
this.renderedResolution_ = NaN;
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* @private
|
|
324
|
+
* @type {import("../../extent.js").Extent}
|
|
325
|
+
*/
|
|
326
|
+
this.renderedExtent_ = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.createEmpty)();
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* @private
|
|
330
|
+
* @type {import("../../extent.js").Extent}
|
|
331
|
+
*/
|
|
332
|
+
this.wrappedRenderedExtent_ = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.createEmpty)();
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* @private
|
|
336
|
+
* @type {number}
|
|
337
|
+
*/
|
|
338
|
+
this.renderedRotation_;
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* @private
|
|
342
|
+
* @type {import("../../coordinate").Coordinate}
|
|
343
|
+
*/
|
|
344
|
+
this.renderedCenter_ = null;
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* @private
|
|
348
|
+
* @type {import("../../proj/Projection").default}
|
|
349
|
+
*/
|
|
350
|
+
this.renderedProjection_ = null;
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* @private
|
|
354
|
+
* @type {number}
|
|
355
|
+
*/
|
|
356
|
+
this.renderedPixelRatio_ = 1;
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* @private
|
|
360
|
+
* @type {import("../../render.js").OrderFunction|null}
|
|
361
|
+
*/
|
|
362
|
+
this.renderedRenderOrder_ = null;
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* @private
|
|
366
|
+
* @type {boolean}
|
|
367
|
+
*/
|
|
368
|
+
this.renderedFrameDeclutter_;
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* @private
|
|
372
|
+
* @type {import("../../render/canvas/ExecutorGroup").default}
|
|
373
|
+
*/
|
|
374
|
+
this.replayGroup_ = null;
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* A new replay group had to be created by `prepareFrame()`
|
|
378
|
+
* @type {boolean}
|
|
379
|
+
*/
|
|
380
|
+
this.replayGroupChanged = true;
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Clipping to be performed by `renderFrame()`
|
|
384
|
+
* @type {boolean}
|
|
385
|
+
*/
|
|
386
|
+
this.clipping = true;
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* @private
|
|
390
|
+
* @type {CanvasRenderingContext2D}
|
|
391
|
+
*/
|
|
392
|
+
this.targetContext_ = null;
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* @private
|
|
396
|
+
* @type {number}
|
|
397
|
+
*/
|
|
398
|
+
this.opacity_ = 1;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* @param {ExecutorGroup} executorGroup Executor group.
|
|
403
|
+
* @param {import("../../Map.js").FrameState} frameState Frame state.
|
|
404
|
+
* @param {boolean} [declutterable] `true` to only render declutterable items,
|
|
405
|
+
* `false` to only render non-declutterable items, `undefined` to render all.
|
|
406
|
+
*/
|
|
407
|
+
renderWorlds(executorGroup, frameState, declutterable) {
|
|
408
|
+
const extent = frameState.extent;
|
|
409
|
+
const viewState = frameState.viewState;
|
|
410
|
+
const center = viewState.center;
|
|
411
|
+
const resolution = viewState.resolution;
|
|
412
|
+
const projection = viewState.projection;
|
|
413
|
+
const rotation = viewState.rotation;
|
|
414
|
+
const projectionExtent = projection.getExtent();
|
|
415
|
+
const vectorSource = this.getLayer().getSource();
|
|
416
|
+
const declutter = this.getLayer().getDeclutter();
|
|
417
|
+
const pixelRatio = frameState.pixelRatio;
|
|
418
|
+
const viewHints = frameState.viewHints;
|
|
419
|
+
const snapToPixel = !(
|
|
420
|
+
viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].ANIMATING] || viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].INTERACTING]
|
|
421
|
+
);
|
|
422
|
+
const context = this.context;
|
|
423
|
+
const width = Math.round(((0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(extent) / resolution) * pixelRatio);
|
|
424
|
+
const height = Math.round(((0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getHeight)(extent) / resolution) * pixelRatio);
|
|
425
|
+
|
|
426
|
+
const multiWorld = vectorSource.getWrapX() && projection.canWrapX();
|
|
427
|
+
const worldWidth = multiWorld ? (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(projectionExtent) : null;
|
|
428
|
+
const endWorld = multiWorld
|
|
429
|
+
? Math.ceil((extent[2] - projectionExtent[2]) / worldWidth) + 1
|
|
430
|
+
: 1;
|
|
431
|
+
let world = multiWorld
|
|
432
|
+
? Math.floor((extent[0] - projectionExtent[0]) / worldWidth)
|
|
433
|
+
: 0;
|
|
434
|
+
do {
|
|
435
|
+
let transform = this.getRenderTransform(
|
|
436
|
+
center,
|
|
437
|
+
resolution,
|
|
438
|
+
0,
|
|
439
|
+
pixelRatio,
|
|
440
|
+
width,
|
|
441
|
+
height,
|
|
442
|
+
world * worldWidth,
|
|
443
|
+
);
|
|
444
|
+
if (frameState.declutter) {
|
|
445
|
+
transform = transform.slice(0);
|
|
446
|
+
}
|
|
447
|
+
executorGroup.execute(
|
|
448
|
+
context,
|
|
449
|
+
[context.canvas.width, context.canvas.height],
|
|
450
|
+
transform,
|
|
451
|
+
rotation,
|
|
452
|
+
snapToPixel,
|
|
453
|
+
declutterable === undefined
|
|
454
|
+
? _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__.ALL
|
|
455
|
+
: declutterable
|
|
456
|
+
? _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__.DECLUTTER
|
|
457
|
+
: _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__.NON_DECLUTTER,
|
|
458
|
+
declutterable
|
|
459
|
+
? declutter && frameState.declutter[declutter]
|
|
460
|
+
: undefined,
|
|
461
|
+
);
|
|
462
|
+
} while (++world < endWorld);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* @private
|
|
467
|
+
*/
|
|
468
|
+
setDrawContext_() {
|
|
469
|
+
if (this.opacity_ !== 1) {
|
|
470
|
+
this.targetContext_ = this.context;
|
|
471
|
+
this.context = (0,_dom_js__WEBPACK_IMPORTED_MODULE_5__.createCanvasContext2D)(
|
|
472
|
+
this.context.canvas.width,
|
|
473
|
+
this.context.canvas.height,
|
|
474
|
+
_Layer_js__WEBPACK_IMPORTED_MODULE_1__.canvasPool,
|
|
475
|
+
);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* @private
|
|
481
|
+
*/
|
|
482
|
+
resetDrawContext_() {
|
|
483
|
+
if (this.opacity_ !== 1 && this.targetContext_) {
|
|
484
|
+
const alpha = this.targetContext_.globalAlpha;
|
|
485
|
+
this.targetContext_.globalAlpha = this.opacity_;
|
|
486
|
+
this.targetContext_.drawImage(this.context.canvas, 0, 0);
|
|
487
|
+
this.targetContext_.globalAlpha = alpha;
|
|
488
|
+
(0,_dom_js__WEBPACK_IMPORTED_MODULE_5__.releaseCanvas)(this.context);
|
|
489
|
+
_Layer_js__WEBPACK_IMPORTED_MODULE_1__.canvasPool.push(this.context.canvas);
|
|
490
|
+
this.context = this.targetContext_;
|
|
491
|
+
this.targetContext_ = null;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* Render declutter items for this layer
|
|
497
|
+
* @param {import("../../Map.js").FrameState} frameState Frame state.
|
|
498
|
+
*/
|
|
499
|
+
renderDeclutter(frameState) {
|
|
500
|
+
if (!this.replayGroup_ || !this.getLayer().getDeclutter()) {
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
this.renderWorlds(this.replayGroup_, frameState, true);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Render deferred instructions.
|
|
508
|
+
* @param {import("../../Map.js").FrameState} frameState Frame state.
|
|
509
|
+
* @override
|
|
510
|
+
*/
|
|
511
|
+
renderDeferredInternal(frameState) {
|
|
512
|
+
if (!this.replayGroup_) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
this.replayGroup_.renderDeferred();
|
|
516
|
+
if (this.clipped_) {
|
|
517
|
+
this.context.restore();
|
|
518
|
+
}
|
|
519
|
+
this.resetDrawContext_();
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Render the layer.
|
|
524
|
+
* @param {import("../../Map.js").FrameState} frameState Frame state.
|
|
525
|
+
* @param {HTMLElement|null} target Target that may be used to render content to.
|
|
526
|
+
* @return {HTMLElement} The rendered element.
|
|
527
|
+
* @override
|
|
528
|
+
*/
|
|
529
|
+
renderFrame(frameState, target) {
|
|
530
|
+
const layerState = frameState.layerStatesArray[frameState.layerIndex];
|
|
531
|
+
this.opacity_ = layerState.opacity;
|
|
532
|
+
const viewState = frameState.viewState;
|
|
533
|
+
|
|
534
|
+
this.prepareContainer(frameState, target);
|
|
535
|
+
const context = this.context;
|
|
536
|
+
|
|
537
|
+
const replayGroup = this.replayGroup_;
|
|
538
|
+
let render = replayGroup && !replayGroup.isEmpty();
|
|
539
|
+
if (!render) {
|
|
540
|
+
const hasRenderListeners =
|
|
541
|
+
this.getLayer().hasListener(_render_EventType_js__WEBPACK_IMPORTED_MODULE_6__["default"].PRERENDER) ||
|
|
542
|
+
this.getLayer().hasListener(_render_EventType_js__WEBPACK_IMPORTED_MODULE_6__["default"].POSTRENDER);
|
|
543
|
+
if (!hasRenderListeners) {
|
|
544
|
+
return this.container;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
this.setDrawContext_();
|
|
549
|
+
|
|
550
|
+
this.preRender(context, frameState);
|
|
551
|
+
|
|
552
|
+
const projection = viewState.projection;
|
|
553
|
+
|
|
554
|
+
// clipped rendering if layer extent is set
|
|
555
|
+
this.clipped_ = false;
|
|
556
|
+
if (render && layerState.extent && this.clipping) {
|
|
557
|
+
const layerExtent = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.fromUserExtent)(layerState.extent, projection);
|
|
558
|
+
render = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.intersects)(layerExtent, frameState.extent);
|
|
559
|
+
this.clipped_ = render && !(0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(layerExtent, frameState.extent);
|
|
560
|
+
if (this.clipped_) {
|
|
561
|
+
this.clipUnrotated(context, frameState, layerExtent);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
if (render) {
|
|
566
|
+
this.renderWorlds(
|
|
567
|
+
replayGroup,
|
|
568
|
+
frameState,
|
|
569
|
+
this.getLayer().getDeclutter() ? false : undefined,
|
|
570
|
+
);
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
if (!frameState.declutter && this.clipped_) {
|
|
574
|
+
context.restore();
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
this.postRender(context, frameState);
|
|
578
|
+
|
|
579
|
+
if (this.renderedRotation_ !== viewState.rotation) {
|
|
580
|
+
this.renderedRotation_ = viewState.rotation;
|
|
581
|
+
this.hitDetectionImageData_ = null;
|
|
582
|
+
}
|
|
583
|
+
if (!frameState.declutter) {
|
|
584
|
+
this.resetDrawContext_();
|
|
585
|
+
}
|
|
586
|
+
return this.container;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* Asynchronous layer level hit detection.
|
|
591
|
+
* @param {import("../../pixel.js").Pixel} pixel Pixel.
|
|
592
|
+
* @return {Promise<Array<import("../../Feature").default>>} Promise
|
|
593
|
+
* that resolves with an array of features.
|
|
594
|
+
* @override
|
|
595
|
+
*/
|
|
596
|
+
getFeatures(pixel) {
|
|
597
|
+
return new Promise((resolve) => {
|
|
598
|
+
if (
|
|
599
|
+
this.frameState &&
|
|
600
|
+
!this.hitDetectionImageData_ &&
|
|
601
|
+
!this.animatingOrInteracting_
|
|
602
|
+
) {
|
|
603
|
+
const size = this.frameState.size.slice();
|
|
604
|
+
const center = this.renderedCenter_;
|
|
605
|
+
const resolution = this.renderedResolution_;
|
|
606
|
+
const rotation = this.renderedRotation_;
|
|
607
|
+
const projection = this.renderedProjection_;
|
|
608
|
+
const extent = this.wrappedRenderedExtent_;
|
|
609
|
+
const layer = this.getLayer();
|
|
610
|
+
const transforms = [];
|
|
611
|
+
const width = size[0] * _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION;
|
|
612
|
+
const height = size[1] * _render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION;
|
|
613
|
+
transforms.push(
|
|
614
|
+
this.getRenderTransform(
|
|
615
|
+
center,
|
|
616
|
+
resolution,
|
|
617
|
+
rotation,
|
|
618
|
+
_render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION,
|
|
619
|
+
width,
|
|
620
|
+
height,
|
|
621
|
+
0,
|
|
622
|
+
).slice(),
|
|
623
|
+
);
|
|
624
|
+
const source = layer.getSource();
|
|
625
|
+
const projectionExtent = projection.getExtent();
|
|
626
|
+
if (
|
|
627
|
+
source.getWrapX() &&
|
|
628
|
+
projection.canWrapX() &&
|
|
629
|
+
!(0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(projectionExtent, extent)
|
|
630
|
+
) {
|
|
631
|
+
let startX = extent[0];
|
|
632
|
+
const worldWidth = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(projectionExtent);
|
|
633
|
+
let world = 0;
|
|
634
|
+
let offsetX;
|
|
635
|
+
while (startX < projectionExtent[0]) {
|
|
636
|
+
--world;
|
|
637
|
+
offsetX = worldWidth * world;
|
|
638
|
+
transforms.push(
|
|
639
|
+
this.getRenderTransform(
|
|
640
|
+
center,
|
|
641
|
+
resolution,
|
|
642
|
+
rotation,
|
|
643
|
+
_render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION,
|
|
644
|
+
width,
|
|
645
|
+
height,
|
|
646
|
+
offsetX,
|
|
647
|
+
).slice(),
|
|
648
|
+
);
|
|
649
|
+
startX += worldWidth;
|
|
650
|
+
}
|
|
651
|
+
world = 0;
|
|
652
|
+
startX = extent[2];
|
|
653
|
+
while (startX > projectionExtent[2]) {
|
|
654
|
+
++world;
|
|
655
|
+
offsetX = worldWidth * world;
|
|
656
|
+
transforms.push(
|
|
657
|
+
this.getRenderTransform(
|
|
658
|
+
center,
|
|
659
|
+
resolution,
|
|
660
|
+
rotation,
|
|
661
|
+
_render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.HIT_DETECT_RESOLUTION,
|
|
662
|
+
width,
|
|
663
|
+
height,
|
|
664
|
+
offsetX,
|
|
665
|
+
).slice(),
|
|
666
|
+
);
|
|
667
|
+
startX -= worldWidth;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
const userProjection = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getUserProjection)();
|
|
671
|
+
this.hitDetectionImageData_ = (0,_render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.createHitDetectionImageData)(
|
|
672
|
+
size,
|
|
673
|
+
transforms,
|
|
674
|
+
this.renderedFeatures_,
|
|
675
|
+
layer.getStyleFunction(),
|
|
676
|
+
extent,
|
|
677
|
+
resolution,
|
|
678
|
+
rotation,
|
|
679
|
+
(0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.getSquaredTolerance)(resolution, this.renderedPixelRatio_),
|
|
680
|
+
userProjection ? projection : null,
|
|
681
|
+
);
|
|
682
|
+
}
|
|
683
|
+
resolve(
|
|
684
|
+
(0,_render_canvas_hitdetect_js__WEBPACK_IMPORTED_MODULE_7__.hitDetect)(pixel, this.renderedFeatures_, this.hitDetectionImageData_),
|
|
685
|
+
);
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/**
|
|
690
|
+
* @param {import("../../coordinate.js").Coordinate} coordinate Coordinate.
|
|
691
|
+
* @param {import("../../Map.js").FrameState} frameState Frame state.
|
|
692
|
+
* @param {number} hitTolerance Hit tolerance in pixels.
|
|
693
|
+
* @param {import("../vector.js").FeatureCallback<T>} callback Feature callback.
|
|
694
|
+
* @param {Array<import("../Map.js").HitMatch<T>>} matches The hit detected matches with tolerance.
|
|
695
|
+
* @return {T|undefined} Callback result.
|
|
696
|
+
* @template T
|
|
697
|
+
* @override
|
|
698
|
+
*/
|
|
699
|
+
forEachFeatureAtCoordinate(
|
|
700
|
+
coordinate,
|
|
701
|
+
frameState,
|
|
702
|
+
hitTolerance,
|
|
703
|
+
callback,
|
|
704
|
+
matches,
|
|
705
|
+
) {
|
|
706
|
+
if (!this.replayGroup_) {
|
|
707
|
+
return undefined;
|
|
708
|
+
}
|
|
709
|
+
const resolution = frameState.viewState.resolution;
|
|
710
|
+
const rotation = frameState.viewState.rotation;
|
|
711
|
+
const layer = this.getLayer();
|
|
712
|
+
|
|
713
|
+
/** @type {!Object<string, import("../Map.js").HitMatch<T>|true>} */
|
|
714
|
+
const features = {};
|
|
715
|
+
|
|
716
|
+
/**
|
|
717
|
+
* @param {import("../../Feature.js").FeatureLike} feature Feature.
|
|
718
|
+
* @param {import("../../geom/SimpleGeometry.js").default} geometry Geometry.
|
|
719
|
+
* @param {number} distanceSq The squared distance to the click position
|
|
720
|
+
* @return {T|undefined} Callback result.
|
|
721
|
+
*/
|
|
722
|
+
const featureCallback = function (feature, geometry, distanceSq) {
|
|
723
|
+
const key = (0,_util_js__WEBPACK_IMPORTED_MODULE_9__.getUid)(feature);
|
|
724
|
+
const match = features[key];
|
|
725
|
+
if (!match) {
|
|
726
|
+
if (distanceSq === 0) {
|
|
727
|
+
features[key] = true;
|
|
728
|
+
return callback(feature, layer, geometry);
|
|
729
|
+
}
|
|
730
|
+
matches.push(
|
|
731
|
+
(features[key] = {
|
|
732
|
+
feature: feature,
|
|
733
|
+
layer: layer,
|
|
734
|
+
geometry: geometry,
|
|
735
|
+
distanceSq: distanceSq,
|
|
736
|
+
callback: callback,
|
|
737
|
+
}),
|
|
738
|
+
);
|
|
739
|
+
} else if (match !== true && distanceSq < match.distanceSq) {
|
|
740
|
+
if (distanceSq === 0) {
|
|
741
|
+
features[key] = true;
|
|
742
|
+
matches.splice(matches.lastIndexOf(match), 1);
|
|
743
|
+
return callback(feature, layer, geometry);
|
|
744
|
+
}
|
|
745
|
+
match.geometry = geometry;
|
|
746
|
+
match.distanceSq = distanceSq;
|
|
747
|
+
}
|
|
748
|
+
return undefined;
|
|
749
|
+
};
|
|
750
|
+
|
|
751
|
+
const declutter = this.getLayer().getDeclutter();
|
|
752
|
+
return this.replayGroup_.forEachFeatureAtCoordinate(
|
|
753
|
+
coordinate,
|
|
754
|
+
resolution,
|
|
755
|
+
rotation,
|
|
756
|
+
hitTolerance,
|
|
757
|
+
featureCallback,
|
|
758
|
+
declutter
|
|
759
|
+
? frameState.declutter?.[declutter]?.all().map((item) => item.value)
|
|
760
|
+
: null,
|
|
761
|
+
);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
/**
|
|
765
|
+
* Perform action necessary to get the layer rendered after new fonts have loaded
|
|
766
|
+
* @override
|
|
767
|
+
*/
|
|
768
|
+
handleFontsChanged() {
|
|
769
|
+
const layer = this.getLayer();
|
|
770
|
+
if (layer.getVisible() && this.replayGroup_) {
|
|
771
|
+
layer.changed();
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
/**
|
|
776
|
+
* Handle changes in image style state.
|
|
777
|
+
* @param {import("../../events/Event.js").default} event Image style change event.
|
|
778
|
+
* @private
|
|
779
|
+
*/
|
|
780
|
+
handleStyleImageChange_(event) {
|
|
781
|
+
this.renderIfReadyAndVisible();
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/**
|
|
785
|
+
* Determine whether render should be called.
|
|
786
|
+
* @param {import("../../Map.js").FrameState} frameState Frame state.
|
|
787
|
+
* @return {boolean} Layer is ready to be rendered.
|
|
788
|
+
* @override
|
|
789
|
+
*/
|
|
790
|
+
prepareFrame(frameState) {
|
|
791
|
+
const vectorLayer = this.getLayer();
|
|
792
|
+
const vectorSource = vectorLayer.getSource();
|
|
793
|
+
if (!vectorSource) {
|
|
794
|
+
return false;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
const animating = frameState.viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].ANIMATING];
|
|
798
|
+
const interacting = frameState.viewHints[_ViewHint_js__WEBPACK_IMPORTED_MODULE_3__["default"].INTERACTING];
|
|
799
|
+
const updateWhileAnimating = vectorLayer.getUpdateWhileAnimating();
|
|
800
|
+
const updateWhileInteracting = vectorLayer.getUpdateWhileInteracting();
|
|
801
|
+
|
|
802
|
+
if (
|
|
803
|
+
(this.ready && !updateWhileAnimating && animating) ||
|
|
804
|
+
(!updateWhileInteracting && interacting)
|
|
805
|
+
) {
|
|
806
|
+
this.animatingOrInteracting_ = true;
|
|
807
|
+
return true;
|
|
808
|
+
}
|
|
809
|
+
this.animatingOrInteracting_ = false;
|
|
810
|
+
|
|
811
|
+
const frameStateExtent = frameState.extent;
|
|
812
|
+
const viewState = frameState.viewState;
|
|
813
|
+
const projection = viewState.projection;
|
|
814
|
+
const resolution = viewState.resolution;
|
|
815
|
+
const pixelRatio = frameState.pixelRatio;
|
|
816
|
+
const vectorLayerRevision = vectorLayer.getRevision();
|
|
817
|
+
const vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();
|
|
818
|
+
let vectorLayerRenderOrder = vectorLayer.getRenderOrder();
|
|
819
|
+
|
|
820
|
+
if (vectorLayerRenderOrder === undefined) {
|
|
821
|
+
vectorLayerRenderOrder = _vector_js__WEBPACK_IMPORTED_MODULE_8__.defaultOrder;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
const center = viewState.center.slice();
|
|
825
|
+
const extent = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.buffer)(
|
|
826
|
+
frameStateExtent,
|
|
827
|
+
vectorLayerRenderBuffer * resolution,
|
|
828
|
+
);
|
|
829
|
+
const renderedExtent = extent.slice();
|
|
830
|
+
const loadExtents = [extent.slice()];
|
|
831
|
+
const projectionExtent = projection.getExtent();
|
|
832
|
+
|
|
833
|
+
if (
|
|
834
|
+
vectorSource.getWrapX() &&
|
|
835
|
+
projection.canWrapX() &&
|
|
836
|
+
!(0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(projectionExtent, frameState.extent)
|
|
837
|
+
) {
|
|
838
|
+
// For the replay group, we need an extent that intersects the real world
|
|
839
|
+
// (-180° to +180°). To support geometries in a coordinate range from -540°
|
|
840
|
+
// to +540°, we add at least 1 world width on each side of the projection
|
|
841
|
+
// extent. If the viewport is wider than the world, we need to add half of
|
|
842
|
+
// the viewport width to make sure we cover the whole viewport.
|
|
843
|
+
const worldWidth = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(projectionExtent);
|
|
844
|
+
const gutter = Math.max((0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.getWidth)(extent) / 2, worldWidth);
|
|
845
|
+
extent[0] = projectionExtent[0] - gutter;
|
|
846
|
+
extent[2] = projectionExtent[2] + gutter;
|
|
847
|
+
(0,_coordinate_js__WEBPACK_IMPORTED_MODULE_10__.wrapX)(center, projection);
|
|
848
|
+
const loadExtent = (0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.wrapX)(loadExtents[0], projection);
|
|
849
|
+
// If the extent crosses the date line, we load data for both edges of the worlds
|
|
850
|
+
if (
|
|
851
|
+
loadExtent[0] < projectionExtent[0] &&
|
|
852
|
+
loadExtent[2] < projectionExtent[2]
|
|
853
|
+
) {
|
|
854
|
+
loadExtents.push([
|
|
855
|
+
loadExtent[0] + worldWidth,
|
|
856
|
+
loadExtent[1],
|
|
857
|
+
loadExtent[2] + worldWidth,
|
|
858
|
+
loadExtent[3],
|
|
859
|
+
]);
|
|
860
|
+
} else if (
|
|
861
|
+
loadExtent[0] > projectionExtent[0] &&
|
|
862
|
+
loadExtent[2] > projectionExtent[2]
|
|
863
|
+
) {
|
|
864
|
+
loadExtents.push([
|
|
865
|
+
loadExtent[0] - worldWidth,
|
|
866
|
+
loadExtent[1],
|
|
867
|
+
loadExtent[2] - worldWidth,
|
|
868
|
+
loadExtent[3],
|
|
869
|
+
]);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
if (
|
|
874
|
+
this.ready &&
|
|
875
|
+
this.renderedResolution_ == resolution &&
|
|
876
|
+
this.renderedRevision_ == vectorLayerRevision &&
|
|
877
|
+
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
|
878
|
+
this.renderedFrameDeclutter_ === !!frameState.declutter &&
|
|
879
|
+
(0,_extent_js__WEBPACK_IMPORTED_MODULE_2__.containsExtent)(this.wrappedRenderedExtent_, extent)
|
|
880
|
+
) {
|
|
881
|
+
if (!(0,_array_js__WEBPACK_IMPORTED_MODULE_11__.equals)(this.renderedExtent_, renderedExtent)) {
|
|
882
|
+
this.hitDetectionImageData_ = null;
|
|
883
|
+
this.renderedExtent_ = renderedExtent;
|
|
884
|
+
}
|
|
885
|
+
this.renderedCenter_ = center;
|
|
886
|
+
this.replayGroupChanged = false;
|
|
887
|
+
return true;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
this.replayGroup_ = null;
|
|
891
|
+
|
|
892
|
+
const replayGroup = new _render_canvas_BuilderGroup_js__WEBPACK_IMPORTED_MODULE_12__["default"](
|
|
893
|
+
(0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.getTolerance)(resolution, pixelRatio),
|
|
894
|
+
extent,
|
|
895
|
+
resolution,
|
|
896
|
+
pixelRatio,
|
|
897
|
+
);
|
|
898
|
+
|
|
899
|
+
const userProjection = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getUserProjection)();
|
|
900
|
+
let userTransform;
|
|
901
|
+
if (userProjection) {
|
|
902
|
+
for (let i = 0, ii = loadExtents.length; i < ii; ++i) {
|
|
903
|
+
const extent = loadExtents[i];
|
|
904
|
+
const userExtent = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserExtent)(extent, projection);
|
|
905
|
+
vectorSource.loadFeatures(
|
|
906
|
+
userExtent,
|
|
907
|
+
(0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserResolution)(resolution, projection),
|
|
908
|
+
userProjection,
|
|
909
|
+
);
|
|
910
|
+
}
|
|
911
|
+
userTransform = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.getTransformFromProjections)(userProjection, projection);
|
|
912
|
+
} else {
|
|
913
|
+
for (let i = 0, ii = loadExtents.length; i < ii; ++i) {
|
|
914
|
+
vectorSource.loadFeatures(loadExtents[i], resolution, projection);
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
const squaredTolerance = (0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.getSquaredTolerance)(resolution, pixelRatio);
|
|
919
|
+
let ready = true;
|
|
920
|
+
const render =
|
|
921
|
+
/**
|
|
922
|
+
* @param {import("../../Feature.js").default} feature Feature.
|
|
923
|
+
* @param {number} index Index.
|
|
924
|
+
*/
|
|
925
|
+
(feature, index) => {
|
|
926
|
+
let styles;
|
|
927
|
+
const styleFunction =
|
|
928
|
+
feature.getStyleFunction() || vectorLayer.getStyleFunction();
|
|
929
|
+
if (styleFunction) {
|
|
930
|
+
styles = styleFunction(feature, resolution);
|
|
931
|
+
}
|
|
932
|
+
if (styles) {
|
|
933
|
+
const dirty = this.renderFeature(
|
|
934
|
+
feature,
|
|
935
|
+
squaredTolerance,
|
|
936
|
+
styles,
|
|
937
|
+
replayGroup,
|
|
938
|
+
userTransform,
|
|
939
|
+
this.getLayer().getDeclutter(),
|
|
940
|
+
index,
|
|
941
|
+
);
|
|
942
|
+
ready = ready && !dirty;
|
|
943
|
+
}
|
|
944
|
+
};
|
|
945
|
+
|
|
946
|
+
const userExtent = (0,_proj_js__WEBPACK_IMPORTED_MODULE_0__.toUserExtent)(extent, projection);
|
|
947
|
+
/** @type {Array<import("../../Feature.js").default>} */
|
|
948
|
+
const features = vectorSource.getFeaturesInExtent(userExtent);
|
|
949
|
+
if (vectorLayerRenderOrder) {
|
|
950
|
+
features.sort(vectorLayerRenderOrder);
|
|
951
|
+
}
|
|
952
|
+
for (let i = 0, ii = features.length; i < ii; ++i) {
|
|
953
|
+
render(features[i], i);
|
|
954
|
+
}
|
|
955
|
+
this.renderedFeatures_ = features;
|
|
956
|
+
this.ready = ready;
|
|
957
|
+
|
|
958
|
+
const replayGroupInstructions = replayGroup.finish();
|
|
959
|
+
const executorGroup = new _render_canvas_ExecutorGroup_js__WEBPACK_IMPORTED_MODULE_4__["default"](
|
|
960
|
+
extent,
|
|
961
|
+
resolution,
|
|
962
|
+
pixelRatio,
|
|
963
|
+
vectorSource.getOverlaps(),
|
|
964
|
+
replayGroupInstructions,
|
|
965
|
+
vectorLayer.getRenderBuffer(),
|
|
966
|
+
!!frameState.declutter,
|
|
967
|
+
);
|
|
968
|
+
|
|
969
|
+
this.renderedResolution_ = resolution;
|
|
970
|
+
this.renderedRevision_ = vectorLayerRevision;
|
|
971
|
+
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
|
972
|
+
this.renderedFrameDeclutter_ = !!frameState.declutter;
|
|
973
|
+
this.renderedExtent_ = renderedExtent;
|
|
974
|
+
this.wrappedRenderedExtent_ = extent;
|
|
975
|
+
this.renderedCenter_ = center;
|
|
976
|
+
this.renderedProjection_ = projection;
|
|
977
|
+
this.renderedPixelRatio_ = pixelRatio;
|
|
978
|
+
this.replayGroup_ = executorGroup;
|
|
979
|
+
this.hitDetectionImageData_ = null;
|
|
980
|
+
|
|
981
|
+
this.replayGroupChanged = true;
|
|
982
|
+
return true;
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
/**
|
|
986
|
+
* @param {import("../../Feature.js").default} feature Feature.
|
|
987
|
+
* @param {number} squaredTolerance Squared render tolerance.
|
|
988
|
+
* @param {import("../../style/Style.js").default|Array<import("../../style/Style.js").default>} styles The style or array of styles.
|
|
989
|
+
* @param {import("../../render/canvas/BuilderGroup.js").default} builderGroup Builder group.
|
|
990
|
+
* @param {import("../../proj.js").TransformFunction} [transform] Transform from user to view projection.
|
|
991
|
+
* @param {boolean} [declutter] Enable decluttering.
|
|
992
|
+
* @param {number} [index] Render order index.
|
|
993
|
+
* @return {boolean} `true` if an image is loading.
|
|
994
|
+
*/
|
|
995
|
+
renderFeature(
|
|
996
|
+
feature,
|
|
997
|
+
squaredTolerance,
|
|
998
|
+
styles,
|
|
999
|
+
builderGroup,
|
|
1000
|
+
transform,
|
|
1001
|
+
declutter,
|
|
1002
|
+
index,
|
|
1003
|
+
) {
|
|
1004
|
+
if (!styles) {
|
|
1005
|
+
return false;
|
|
1006
|
+
}
|
|
1007
|
+
let loading = false;
|
|
1008
|
+
if (Array.isArray(styles)) {
|
|
1009
|
+
for (let i = 0, ii = styles.length; i < ii; ++i) {
|
|
1010
|
+
loading =
|
|
1011
|
+
(0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.renderFeature)(
|
|
1012
|
+
builderGroup,
|
|
1013
|
+
feature,
|
|
1014
|
+
styles[i],
|
|
1015
|
+
squaredTolerance,
|
|
1016
|
+
this.boundHandleStyleImageChange_,
|
|
1017
|
+
transform,
|
|
1018
|
+
declutter,
|
|
1019
|
+
index,
|
|
1020
|
+
) || loading;
|
|
1021
|
+
}
|
|
1022
|
+
} else {
|
|
1023
|
+
loading = (0,_vector_js__WEBPACK_IMPORTED_MODULE_8__.renderFeature)(
|
|
1024
|
+
builderGroup,
|
|
1025
|
+
feature,
|
|
1026
|
+
styles,
|
|
1027
|
+
squaredTolerance,
|
|
1028
|
+
this.boundHandleStyleImageChange_,
|
|
1029
|
+
transform,
|
|
1030
|
+
declutter,
|
|
1031
|
+
index,
|
|
1032
|
+
);
|
|
1033
|
+
}
|
|
1034
|
+
return loading;
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CanvasVectorLayerRenderer);
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
/***/ })
|
|
1042
|
+
|
|
1043
|
+
}])
|
|
1044
|
+
//# sourceMappingURL=vendors-node_modules_ol_renderer_canvas_VectorLayer_js.js.map
|