react-spatial 1.2.2 → 1.2.3-beta.3
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/LayerService.js +128 -184
- package/LayerService.js.map +7 -1
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +163 -221
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -1
- package/components/BaseLayerSwitcher/index.js +1 -3
- package/components/BaseLayerSwitcher/index.js.map +7 -1
- package/components/BasicMap/BasicMap.js +147 -285
- package/components/BasicMap/BasicMap.js.map +7 -1
- package/components/BasicMap/index.js +1 -3
- package/components/BasicMap/index.js.map +7 -1
- package/components/CanvasSaveButton/CanvasSaveButton.js +165 -419
- package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -1
- package/components/CanvasSaveButton/index.js +1 -3
- package/components/CanvasSaveButton/index.js.map +7 -1
- package/components/Copyright/Copyright.js +29 -70
- package/components/Copyright/Copyright.js.map +7 -1
- package/components/Copyright/index.js +1 -3
- package/components/Copyright/index.js.map +7 -1
- package/components/FeatureExportButton/FeatureExportButton.js +40 -106
- package/components/FeatureExportButton/FeatureExportButton.js.map +7 -1
- package/components/FeatureExportButton/index.js +1 -3
- package/components/FeatureExportButton/index.js.map +7 -1
- package/components/FilterButton/FilterButton.js +41 -106
- package/components/FilterButton/FilterButton.js.map +7 -1
- package/components/FilterButton/index.js +1 -3
- package/components/FilterButton/index.js.map +7 -1
- package/components/FitExtent/FitExtent.js +17 -50
- package/components/FitExtent/FitExtent.js.map +7 -1
- package/components/FitExtent/index.js +1 -3
- package/components/FitExtent/index.js.map +7 -1
- package/components/FollowButton/FollowButton.js +41 -111
- package/components/FollowButton/FollowButton.js.map +7 -1
- package/components/FollowButton/index.js +1 -3
- package/components/FollowButton/index.js.map +7 -1
- package/components/Geolocation/Geolocation.js +104 -213
- package/components/Geolocation/Geolocation.js.map +7 -1
- package/components/Geolocation/index.js +1 -3
- package/components/Geolocation/index.js.map +7 -1
- package/components/LayerTree/LayerTree.js +204 -410
- package/components/LayerTree/LayerTree.js.map +7 -1
- package/components/LayerTree/index.js +1 -3
- package/components/LayerTree/index.js.map +7 -1
- package/components/MousePosition/MousePosition.js +61 -130
- package/components/MousePosition/MousePosition.js.map +7 -1
- package/components/MousePosition/index.js +1 -3
- package/components/MousePosition/index.js.map +7 -1
- package/components/NorthArrow/NorthArrow.js +22 -62
- package/components/NorthArrow/NorthArrow.js.map +7 -1
- package/components/NorthArrow/index.js +1 -3
- package/components/NorthArrow/index.js.map +7 -1
- package/components/Overlay/Overlay.js +83 -130
- package/components/Overlay/Overlay.js.map +7 -1
- package/components/Overlay/index.js +1 -3
- package/components/Overlay/index.js.map +7 -1
- package/components/Permalink/Permalink.js +150 -244
- package/components/Permalink/Permalink.js.map +7 -1
- package/components/Permalink/index.js +1 -3
- package/components/Permalink/index.js.map +7 -1
- package/components/Popup/Popup.js +106 -233
- package/components/Popup/Popup.js.map +7 -1
- package/components/Popup/index.js +1 -3
- package/components/Popup/index.js.map +7 -1
- package/components/ResizeHandler/ResizeHandler.js +58 -113
- package/components/ResizeHandler/ResizeHandler.js.map +7 -1
- package/components/ResizeHandler/index.js +1 -3
- package/components/ResizeHandler/index.js.map +7 -1
- package/components/RouteSchedule/RouteSchedule.js +150 -283
- package/components/RouteSchedule/RouteSchedule.js.map +7 -1
- package/components/RouteSchedule/index.js +1 -3
- package/components/RouteSchedule/index.js.map +7 -1
- package/components/ScaleLine/ScaleLine.js +21 -45
- package/components/ScaleLine/ScaleLine.js.map +7 -1
- package/components/ScaleLine/index.js +1 -3
- package/components/ScaleLine/index.js.map +7 -1
- package/components/Search/Search.js +122 -186
- package/components/Search/Search.js.map +7 -1
- package/components/Search/SearchService.js +45 -69
- package/components/Search/SearchService.js.map +7 -1
- package/components/Search/engines/Engine.js +18 -25
- package/components/Search/engines/Engine.js.map +7 -1
- package/components/Search/engines/StopFinder.js +21 -38
- package/components/Search/engines/StopFinder.js.map +7 -1
- package/components/Search/index.js +3 -6
- package/components/Search/index.js.map +7 -1
- package/components/StopsFinder/StopsFinder.js +123 -174
- package/components/StopsFinder/StopsFinder.js.map +7 -1
- package/components/StopsFinder/StopsFinderOption.js +37 -54
- package/components/StopsFinder/StopsFinderOption.js.map +7 -1
- package/components/StopsFinder/index.js +1 -3
- package/components/StopsFinder/index.js.map +7 -1
- package/components/TrackerControl/TrackerControl.js +73 -128
- package/components/TrackerControl/TrackerControl.js.map +7 -1
- package/components/TrackerControl/index.js +1 -3
- package/components/TrackerControl/index.js.map +7 -1
- package/components/Zoom/Zoom.js +69 -112
- package/components/Zoom/Zoom.js.map +7 -1
- package/components/Zoom/index.js +1 -3
- package/components/Zoom/index.js.map +7 -1
- package/package.json +10 -5
- package/propTypes.js +17 -23
- package/propTypes.js.map +7 -1
- package/setupTests.js +2 -4
- package/setupTests.js.map +7 -1
- package/themes/README.md +26 -0
- package/themes/default/components.scss +0 -1
- package/themes/default/examples.scss +0 -1
- package/utils/GlobalsForOle.js +63 -64
- package/utils/GlobalsForOle.js.map +7 -1
- package/utils/KML.js +178 -364
- package/utils/KML.js.map +7 -1
- package/utils/KMLFormat.js +37 -73
- package/utils/KMLFormat.js.map +7 -1
- package/utils/Styles.js +24 -32
- package/utils/Styles.js.map +7 -1
- package/utils/getPolygonPattern.js +11 -44
- package/utils/getPolygonPattern.js.map +7 -1
- package/utils/timeUtils.js +16 -35
- package/utils/timeUtils.js.map +7 -1
- package/LayerService.test.js +0 -160
- package/LayerService.test.js.map +0 -1
- package/Projections.js +0 -16
- package/Projections.js.map +0 -1
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -88
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +0 -1
- package/components/BaseLayerToggler/BaseLayerToggler.js +0 -490
- package/components/BaseLayerToggler/BaseLayerToggler.js.map +0 -1
- package/components/BaseLayerToggler/BaseLayerToggler.md.scss +0 -9
- package/components/BaseLayerToggler/BaseLayerToggler.scss +0 -49
- package/components/BaseLayerToggler/BaseLayerToggler.test.js +0 -127
- package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +0 -1
- package/components/BaseLayerToggler/index.js +0 -3
- package/components/BaseLayerToggler/index.js.map +0 -1
- package/components/BasicMap/BasicMap.test.js +0 -288
- package/components/BasicMap/BasicMap.test.js.map +0 -1
- package/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -173
- package/components/CanvasSaveButton/CanvasSaveButton.test.js.map +0 -1
- package/components/Copyright/Copyright.test.js +0 -133
- package/components/Copyright/Copyright.test.js.map +0 -1
- package/components/FeatureExportButton/FeatureExportButton.test.js +0 -407
- package/components/FeatureExportButton/FeatureExportButton.test.js.map +0 -1
- package/components/FilterButton/FilterButton.test.js +0 -48
- package/components/FilterButton/FilterButton.test.js.map +0 -1
- package/components/FitExtent/FitExtent.test.js +0 -44
- package/components/FitExtent/FitExtent.test.js.map +0 -1
- package/components/FollowButton/FollowButton.test.js +0 -57
- package/components/FollowButton/FollowButton.test.js.map +0 -1
- package/components/Geolocation/Geolocation.test.js +0 -263
- package/components/Geolocation/Geolocation.test.js.map +0 -1
- package/components/LayerTree/LayerTree.test.js +0 -323
- package/components/LayerTree/LayerTree.test.js.map +0 -1
- package/components/MousePosition/MousePosition.test.js +0 -125
- package/components/MousePosition/MousePosition.test.js.map +0 -1
- package/components/NorthArrow/NorthArrow.test.js +0 -106
- package/components/NorthArrow/NorthArrow.test.js.map +0 -1
- package/components/Overlay/Overlay.test.js +0 -145
- package/components/Overlay/Overlay.test.js.map +0 -1
- package/components/Permalink/Permalink.test.js +0 -267
- package/components/Permalink/Permalink.test.js.map +0 -1
- package/components/Popup/Popup.test.js +0 -291
- package/components/Popup/Popup.test.js.map +0 -1
- package/components/ResizeHandler/ResizeHandler.test.js +0 -410
- package/components/ResizeHandler/ResizeHandler.test.js.map +0 -1
- package/components/RouteSchedule/RouteSchedule.test.js +0 -102
- package/components/RouteSchedule/RouteSchedule.test.js.map +0 -1
- package/components/ScaleLine/ScaleLine.test.js +0 -32
- package/components/ScaleLine/ScaleLine.test.js.map +0 -1
- package/components/Search/Search.test.js +0 -15
- package/components/Search/Search.test.js.map +0 -1
- package/components/StopsFinder/StopsFinder.test.js +0 -19
- package/components/StopsFinder/StopsFinder.test.js.map +0 -1
- package/components/TrackerControl/TrackerControl.test.js +0 -17
- package/components/TrackerControl/TrackerControl.test.js.map +0 -1
- package/components/Zoom/Zoom.test.js +0 -150
- package/components/Zoom/Zoom.test.js.map +0 -1
- package/styleguidist/ComponentsList.js +0 -52
- package/styleguidist/ComponentsList.js.map +0 -1
- package/styleguidist/StyleGuide.js +0 -253
- package/styleguidist/StyleGuide.js.map +0 -1
- package/utils/KML.test.js +0 -163
- package/utils/KML.test.js.map +0 -1
- package/utils/KMLFormat.test.js +0 -22
- package/utils/KMLFormat.test.js.map +0 -1
- package/utils/getPolygonPattern.test.js +0 -66
- package/utils/getPolygonPattern.test.js.map +0 -1
- package/utils/timeUtils.test.js +0 -32
- package/utils/timeUtils.test.js.map +0 -1
|
@@ -1,124 +1,68 @@
|
|
|
1
|
-
import React, { PureComponent } from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
import VectorSource from 'ol/source/Vector';
|
|
17
|
-
|
|
18
|
-
import { FaRegDotCircle } from 'react-icons/fa';
|
|
19
|
-
|
|
20
|
-
var propTypes = {
|
|
21
|
-
/**
|
|
22
|
-
* CSS class of the button.
|
|
23
|
-
*/
|
|
1
|
+
import React, { PureComponent } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import OLMap from "ol/Map";
|
|
4
|
+
import { transform } from "ol/proj";
|
|
5
|
+
import Point from "ol/geom/Point";
|
|
6
|
+
import Feature from "ol/Feature";
|
|
7
|
+
import { unByKey } from "ol/Observable";
|
|
8
|
+
import Style from "ol/style/Style";
|
|
9
|
+
import Circle from "ol/style/Circle";
|
|
10
|
+
import Fill from "ol/style/Fill";
|
|
11
|
+
import Stroke from "ol/style/Stroke";
|
|
12
|
+
import VectorLayer from "ol/layer/Vector";
|
|
13
|
+
import VectorSource from "ol/source/Vector";
|
|
14
|
+
import { FaRegDotCircle } from "react-icons/fa";
|
|
15
|
+
const propTypes = {
|
|
24
16
|
className: PropTypes.string,
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Children content of the Geolocation button.
|
|
28
|
-
*/
|
|
29
17
|
children: PropTypes.node,
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).
|
|
33
|
-
*/
|
|
34
18
|
map: PropTypes.instanceOf(OLMap).isRequired,
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Function triggered when geolocating is not successful.
|
|
38
|
-
*/
|
|
39
19
|
onError: PropTypes.func,
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Function triggered after successful geoLocation calls. Takes the ol/map, the current lat/lon coordinate and the component instance as arguments.
|
|
43
|
-
*/
|
|
44
20
|
onSuccess: PropTypes.func,
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Function triggered after the geolocation is activated. Takes the ol/map and the component instance as arguments.
|
|
48
|
-
*/
|
|
49
21
|
onActivate: PropTypes.func,
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Function triggered after the geolocation is deactivated. Takes the ol/map and the component instance as arguments..
|
|
53
|
-
*/
|
|
54
22
|
onDeactivate: PropTypes.func,
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* If true, the map is not centered after it has been dragged once.
|
|
58
|
-
*/
|
|
59
23
|
noCenterAfterDrag: PropTypes.bool,
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* If true, the map will constantly recenter to the current Position
|
|
63
|
-
*/
|
|
64
24
|
alwaysRecenterToPosition: PropTypes.bool,
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Color (Number array with rgb values) or style function.
|
|
68
|
-
* If a color is given, the style is animated.
|
|
69
|
-
*/
|
|
70
25
|
colorOrStyleFunc: PropTypes.oneOfType([
|
|
71
26
|
PropTypes.arrayOf(PropTypes.number),
|
|
72
|
-
PropTypes.func
|
|
27
|
+
PropTypes.func
|
|
28
|
+
])
|
|
73
29
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
30
|
+
const defaultProps = {
|
|
31
|
+
className: "rs-geolocation",
|
|
32
|
+
children: /* @__PURE__ */ React.createElement(FaRegDotCircle, {
|
|
33
|
+
focusable: false
|
|
34
|
+
}),
|
|
35
|
+
onError: () => {
|
|
36
|
+
},
|
|
37
|
+
onSuccess: () => {
|
|
38
|
+
},
|
|
39
|
+
onActivate: () => {
|
|
40
|
+
},
|
|
41
|
+
onDeactivate: () => {
|
|
42
|
+
},
|
|
82
43
|
noCenterAfterDrag: false,
|
|
83
44
|
alwaysRecenterToPosition: true,
|
|
84
|
-
colorOrStyleFunc: [235, 0, 0]
|
|
45
|
+
colorOrStyleFunc: [235, 0, 0]
|
|
85
46
|
};
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
* [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).
|
|
90
|
-
*/
|
|
91
|
-
var Geolocation = /*@__PURE__*/(function (PureComponent) {
|
|
92
|
-
function Geolocation(props) {
|
|
93
|
-
PureComponent.call(this, props);
|
|
94
|
-
|
|
47
|
+
class Geolocation extends PureComponent {
|
|
48
|
+
constructor(props) {
|
|
49
|
+
super(props);
|
|
95
50
|
this.layer = new VectorLayer({
|
|
96
|
-
source: new VectorSource()
|
|
51
|
+
source: new VectorSource()
|
|
97
52
|
});
|
|
98
|
-
|
|
99
53
|
this.isRecenteringToPosition = true;
|
|
100
|
-
|
|
101
54
|
this.state = {
|
|
102
|
-
active: false
|
|
55
|
+
active: false
|
|
103
56
|
};
|
|
104
|
-
this.point =
|
|
57
|
+
this.point = void 0;
|
|
105
58
|
}
|
|
106
|
-
|
|
107
|
-
if ( PureComponent ) Geolocation.__proto__ = PureComponent;
|
|
108
|
-
Geolocation.prototype = Object.create( PureComponent && PureComponent.prototype );
|
|
109
|
-
Geolocation.prototype.constructor = Geolocation;
|
|
110
|
-
|
|
111
|
-
Geolocation.prototype.componentWillUnmount = function componentWillUnmount () {
|
|
59
|
+
componentWillUnmount() {
|
|
112
60
|
this.deactivate();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
var ref$1 = this.props;
|
|
119
|
-
var onError = ref$1.onError;
|
|
120
|
-
var geolocation = 'geolocation' in navigator;
|
|
121
|
-
|
|
61
|
+
}
|
|
62
|
+
toggle() {
|
|
63
|
+
const { active } = this.state;
|
|
64
|
+
const { onError } = this.props;
|
|
65
|
+
const geolocation = "geolocation" in navigator;
|
|
122
66
|
if (!geolocation) {
|
|
123
67
|
onError();
|
|
124
68
|
} else if (!active) {
|
|
@@ -126,108 +70,74 @@ var Geolocation = /*@__PURE__*/(function (PureComponent) {
|
|
|
126
70
|
} else {
|
|
127
71
|
this.deactivate();
|
|
128
72
|
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
var ref = this.props;
|
|
133
|
-
var onError = ref.onError;
|
|
134
|
-
|
|
73
|
+
}
|
|
74
|
+
error() {
|
|
75
|
+
const { onError } = this.props;
|
|
135
76
|
this.deactivate();
|
|
136
77
|
onError();
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
var ref = this.props;
|
|
141
|
-
var map = ref.map;
|
|
142
|
-
var onDeactivate = ref.onDeactivate;
|
|
78
|
+
}
|
|
79
|
+
deactivate() {
|
|
80
|
+
const { map, onDeactivate } = this.props;
|
|
143
81
|
window.clearInterval(this.interval);
|
|
144
82
|
this.layer.setMap(null);
|
|
145
83
|
navigator.geolocation.clearWatch(this.watch);
|
|
146
|
-
|
|
147
84
|
this.setState({
|
|
148
|
-
active: false
|
|
85
|
+
active: false
|
|
149
86
|
});
|
|
150
|
-
|
|
151
87
|
this.isRecenteringToPosition = true;
|
|
152
|
-
this.point =
|
|
88
|
+
this.point = void 0;
|
|
153
89
|
onDeactivate(map, this);
|
|
154
90
|
unByKey(this.dragListener);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
var this$1 = this;
|
|
159
|
-
|
|
160
|
-
var ref = this.props;
|
|
161
|
-
var map = ref.map;
|
|
162
|
-
var noCenterAfterDrag = ref.noCenterAfterDrag;
|
|
163
|
-
var onActivate = ref.onActivate;
|
|
164
|
-
|
|
91
|
+
}
|
|
92
|
+
activate() {
|
|
93
|
+
const { map, noCenterAfterDrag, onActivate } = this.props;
|
|
165
94
|
this.projection = map.getView().getProjection().getCode();
|
|
166
95
|
this.point = new Point([0, 0]);
|
|
167
96
|
this.highlight();
|
|
168
97
|
this.layer.setMap(map);
|
|
169
98
|
this.setState({ active: true });
|
|
170
|
-
|
|
171
99
|
this.watch = navigator.geolocation.watchPosition(
|
|
172
100
|
this.update.bind(this),
|
|
173
101
|
this.error.bind(this),
|
|
174
102
|
{
|
|
175
|
-
enableHighAccuracy: true
|
|
103
|
+
enableHighAccuracy: true
|
|
176
104
|
}
|
|
177
105
|
);
|
|
178
|
-
|
|
179
106
|
if (noCenterAfterDrag) {
|
|
180
|
-
this.dragListener = map.on(
|
|
181
|
-
this
|
|
107
|
+
this.dragListener = map.on("pointerdrag", () => {
|
|
108
|
+
this.isRecenteringToPosition = false;
|
|
182
109
|
});
|
|
183
110
|
}
|
|
184
|
-
|
|
185
111
|
onActivate(map, this);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
var latitude = ref_coords.latitude;
|
|
191
|
-
var longitude = ref_coords.longitude;
|
|
192
|
-
|
|
193
|
-
var ref$1 = this.props;
|
|
194
|
-
var map = ref$1.map;
|
|
195
|
-
var alwaysRecenterToPosition = ref$1.alwaysRecenterToPosition;
|
|
196
|
-
var onSuccess = ref$1.onSuccess;
|
|
197
|
-
|
|
198
|
-
var position = transform(
|
|
112
|
+
}
|
|
113
|
+
update({ coords: { latitude, longitude } }) {
|
|
114
|
+
const { map, alwaysRecenterToPosition, onSuccess } = this.props;
|
|
115
|
+
const position = transform(
|
|
199
116
|
[longitude, latitude],
|
|
200
|
-
|
|
117
|
+
"EPSG:4326",
|
|
201
118
|
this.projection
|
|
202
119
|
);
|
|
203
120
|
this.point.setCoordinates(position);
|
|
204
|
-
|
|
205
121
|
if (this.isRecenteringToPosition) {
|
|
206
122
|
map.getView().setCenter(position);
|
|
207
123
|
if (!alwaysRecenterToPosition) {
|
|
208
124
|
this.isRecenteringToPosition = false;
|
|
209
125
|
}
|
|
210
126
|
}
|
|
211
|
-
|
|
212
127
|
onSuccess(map, [latitude, longitude], this);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
var feature = new Feature({
|
|
219
|
-
geometry: this.point,
|
|
128
|
+
}
|
|
129
|
+
highlight() {
|
|
130
|
+
const { colorOrStyleFunc } = this.props;
|
|
131
|
+
const feature = new Feature({
|
|
132
|
+
geometry: this.point
|
|
220
133
|
});
|
|
221
|
-
|
|
222
134
|
if (Array.isArray(colorOrStyleFunc)) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
var rotation = 0;
|
|
228
|
-
|
|
135
|
+
const color = colorOrStyleFunc;
|
|
136
|
+
let decrease = true;
|
|
137
|
+
let opacity = 0.5;
|
|
138
|
+
let rotation = 0;
|
|
229
139
|
window.clearInterval(this.interval);
|
|
230
|
-
this.interval = window.setInterval(
|
|
140
|
+
this.interval = window.setInterval(() => {
|
|
231
141
|
rotation += 0.03;
|
|
232
142
|
decrease = opacity < 0.1 ? false : decrease;
|
|
233
143
|
decrease = opacity > 0.5 ? true : decrease;
|
|
@@ -236,79 +146,60 @@ var Geolocation = /*@__PURE__*/(function (PureComponent) {
|
|
|
236
146
|
feature.changed();
|
|
237
147
|
}
|
|
238
148
|
}, 50);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
var circleStyle = new Style({
|
|
149
|
+
feature.setStyle(() => {
|
|
150
|
+
const circleStyle = new Style({
|
|
242
151
|
image: new Circle({
|
|
243
152
|
radius: 20,
|
|
244
|
-
rotation
|
|
153
|
+
rotation,
|
|
245
154
|
fill: new Fill({
|
|
246
|
-
color:
|
|
155
|
+
color: "rgba(255, 255, 255, 0.01)"
|
|
247
156
|
}),
|
|
248
157
|
stroke: new Stroke({
|
|
249
158
|
lineDash: [30, 10],
|
|
250
159
|
width: 6,
|
|
251
|
-
color:
|
|
252
|
-
})
|
|
253
|
-
})
|
|
160
|
+
color: `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${opacity})`
|
|
161
|
+
})
|
|
162
|
+
})
|
|
254
163
|
});
|
|
255
|
-
|
|
256
164
|
circleStyle.getImage().setRotation(rotation);
|
|
257
|
-
|
|
258
165
|
return [
|
|
259
166
|
new Style({
|
|
260
167
|
image: new Circle({
|
|
261
168
|
radius: 10,
|
|
262
169
|
fill: new Fill({
|
|
263
|
-
color:
|
|
264
|
-
})
|
|
265
|
-
})
|
|
170
|
+
color: `rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.5)`
|
|
171
|
+
})
|
|
172
|
+
})
|
|
266
173
|
}),
|
|
267
|
-
circleStyle
|
|
174
|
+
circleStyle
|
|
175
|
+
];
|
|
268
176
|
});
|
|
269
177
|
} else {
|
|
270
178
|
feature.setStyle(colorOrStyleFunc);
|
|
271
179
|
}
|
|
272
|
-
|
|
273
180
|
this.layer.getSource().clear();
|
|
274
181
|
this.layer.getSource().addFeature(feature);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
var ref = this.props;
|
|
281
|
-
var children = ref.children;
|
|
282
|
-
var className = ref.className;
|
|
283
|
-
// Remove component props from other HTML props.
|
|
284
|
-
var other = Object.entries(this.props).reduce(function (props, ref) {
|
|
285
|
-
var obj;
|
|
286
|
-
|
|
287
|
-
var key = ref[0];
|
|
288
|
-
var value = ref[1];
|
|
289
|
-
return propTypes[key] ? props : Object.assign({}, props, ( obj = {}, obj[key] = value, obj ));
|
|
182
|
+
}
|
|
183
|
+
render() {
|
|
184
|
+
const { children, className } = this.props;
|
|
185
|
+
const other = Object.entries(this.props).reduce((props, [key, value]) => {
|
|
186
|
+
return propTypes[key] ? props : { ...props, [key]: value };
|
|
290
187
|
}, {});
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
return Geolocation;
|
|
307
|
-
}(PureComponent));
|
|
308
|
-
|
|
188
|
+
const { active } = this.state;
|
|
189
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
190
|
+
role: "button",
|
|
191
|
+
tabIndex: "0",
|
|
192
|
+
className: `${className} ${active ? "rs-active" : ""}`,
|
|
193
|
+
onClick: () => {
|
|
194
|
+
return this.toggle();
|
|
195
|
+
},
|
|
196
|
+
onKeyPress: (e) => {
|
|
197
|
+
return e.which === 13 && this.toggle();
|
|
198
|
+
},
|
|
199
|
+
...other
|
|
200
|
+
}, children);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
309
203
|
Geolocation.propTypes = propTypes;
|
|
310
204
|
Geolocation.defaultProps = defaultProps;
|
|
311
|
-
|
|
312
205
|
export default Geolocation;
|
|
313
|
-
|
|
314
|
-
//# sourceMappingURL=Geolocation.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"Geolocation.js","sources":["../../../src/components/Geolocation/Geolocation.js"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport OLMap from 'ol/Map';\nimport { transform } from 'ol/proj';\nimport Point from 'ol/geom/Point';\nimport Feature from 'ol/Feature';\nimport { unByKey } from 'ol/Observable';\n\nimport Style from 'ol/style/Style';\nimport Circle from 'ol/style/Circle';\nimport Fill from 'ol/style/Fill';\nimport Stroke from 'ol/style/Stroke';\n\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\n\nimport { FaRegDotCircle } from 'react-icons/fa';\n\nconst propTypes = {\n /**\n * CSS class of the button.\n */\n className: PropTypes.string,\n\n /**\n * Children content of the Geolocation button.\n */\n children: PropTypes.node,\n\n /**\n * An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\n map: PropTypes.instanceOf(OLMap).isRequired,\n\n /**\n * Function triggered when geolocating is not successful.\n */\n onError: PropTypes.func,\n\n /**\n * Function triggered after successful geoLocation calls. Takes the ol/map, the current lat/lon coordinate and the component instance as arguments.\n */\n onSuccess: PropTypes.func,\n\n /**\n * Function triggered after the geolocation is activated. Takes the ol/map and the component instance as arguments.\n */\n onActivate: PropTypes.func,\n\n /**\n * Function triggered after the geolocation is deactivated. Takes the ol/map and the component instance as arguments..\n */\n onDeactivate: PropTypes.func,\n\n /**\n * If true, the map is not centered after it has been dragged once.\n */\n noCenterAfterDrag: PropTypes.bool,\n\n /**\n * If true, the map will constantly recenter to the current Position\n */\n alwaysRecenterToPosition: PropTypes.bool,\n\n /**\n * Color (Number array with rgb values) or style function.\n * If a color is given, the style is animated.\n */\n colorOrStyleFunc: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.number),\n PropTypes.func,\n ]),\n};\n\nconst defaultProps = {\n className: 'rs-geolocation',\n children: <FaRegDotCircle focusable={false} />,\n onError: () => {},\n onSuccess: () => {},\n onActivate: () => {},\n onDeactivate: () => {},\n noCenterAfterDrag: false,\n alwaysRecenterToPosition: true,\n colorOrStyleFunc: [235, 0, 0],\n};\n\n/**\n * The GeoLocation component creates a button to display the current device's location on an\n * [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\nclass Geolocation extends PureComponent {\n constructor(props) {\n super(props);\n\n this.layer = new VectorLayer({\n source: new VectorSource(),\n });\n\n this.isRecenteringToPosition = true;\n\n this.state = {\n active: false,\n };\n this.point = undefined;\n }\n\n componentWillUnmount() {\n this.deactivate();\n }\n\n toggle() {\n const { active } = this.state;\n const { onError } = this.props;\n const geolocation = 'geolocation' in navigator;\n\n if (!geolocation) {\n onError();\n } else if (!active) {\n this.activate();\n } else {\n this.deactivate();\n }\n }\n\n error() {\n const { onError } = this.props;\n\n this.deactivate();\n onError();\n }\n\n deactivate() {\n const { map, onDeactivate } = this.props;\n window.clearInterval(this.interval);\n this.layer.setMap(null);\n navigator.geolocation.clearWatch(this.watch);\n\n this.setState({\n active: false,\n });\n\n this.isRecenteringToPosition = true;\n this.point = undefined;\n onDeactivate(map, this);\n unByKey(this.dragListener);\n }\n\n activate() {\n const { map, noCenterAfterDrag, onActivate } = this.props;\n\n this.projection = map.getView().getProjection().getCode();\n this.point = new Point([0, 0]);\n this.highlight();\n this.layer.setMap(map);\n this.setState({ active: true });\n\n this.watch = navigator.geolocation.watchPosition(\n this.update.bind(this),\n this.error.bind(this),\n {\n enableHighAccuracy: true,\n },\n );\n\n if (noCenterAfterDrag) {\n this.dragListener = map.on('pointerdrag', () => {\n this.isRecenteringToPosition = false;\n });\n }\n\n onActivate(map, this);\n }\n\n update({ coords: { latitude, longitude } }) {\n const { map, alwaysRecenterToPosition, onSuccess } = this.props;\n\n const position = transform(\n [longitude, latitude],\n 'EPSG:4326',\n this.projection,\n );\n this.point.setCoordinates(position);\n\n if (this.isRecenteringToPosition) {\n map.getView().setCenter(position);\n if (!alwaysRecenterToPosition) {\n this.isRecenteringToPosition = false;\n }\n }\n\n onSuccess(map, [latitude, longitude], this);\n }\n\n highlight() {\n const { colorOrStyleFunc } = this.props;\n const feature = new Feature({\n geometry: this.point,\n });\n\n if (Array.isArray(colorOrStyleFunc)) {\n const color = colorOrStyleFunc;\n\n let decrease = true;\n let opacity = 0.5;\n let rotation = 0;\n\n window.clearInterval(this.interval);\n this.interval = window.setInterval(() => {\n rotation += 0.03;\n decrease = opacity < 0.1 ? false : decrease;\n decrease = opacity > 0.5 ? true : decrease;\n opacity += decrease ? -0.03 : 0.03;\n if (feature) {\n feature.changed();\n }\n }, 50);\n\n feature.setStyle(() => {\n const circleStyle = new Style({\n image: new Circle({\n radius: 20,\n rotation,\n fill: new Fill({\n color: 'rgba(255, 255, 255, 0.01)',\n }),\n stroke: new Stroke({\n lineDash: [30, 10],\n width: 6,\n color: `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${opacity})`,\n }),\n }),\n });\n\n circleStyle.getImage().setRotation(rotation);\n\n return [\n new Style({\n image: new Circle({\n radius: 10,\n fill: new Fill({\n color: `rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.5)`,\n }),\n }),\n }),\n circleStyle,\n ];\n });\n } else {\n feature.setStyle(colorOrStyleFunc);\n }\n\n this.layer.getSource().clear();\n this.layer.getSource().addFeature(feature);\n }\n\n render() {\n const { children, className } = this.props;\n // Remove component props from other HTML props.\n const other = Object.entries(this.props).reduce((props, [key, value]) => {\n return propTypes[key] ? props : { ...props, [key]: value };\n }, {});\n const { active } = this.state;\n\n return (\n <div\n role=\"button\"\n tabIndex=\"0\"\n className={`${className} ${active ? 'rs-active' : ''}`}\n onClick={() => {\n return this.toggle();\n }}\n onKeyPress={(e) => {\n return e.which === 13 && this.toggle();\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...other}\n >\n {children}\n </div>\n );\n }\n}\n\nGeolocation.propTypes = propTypes;\nGeolocation.defaultProps = defaultProps;\n\nexport default Geolocation;\n"],"names":["const","super","this","let"],"mappings":"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"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/Geolocation/Geolocation.js"],
|
|
4
|
+
"sourcesContent": ["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport OLMap from 'ol/Map';\nimport { transform } from 'ol/proj';\nimport Point from 'ol/geom/Point';\nimport Feature from 'ol/Feature';\nimport { unByKey } from 'ol/Observable';\n\nimport Style from 'ol/style/Style';\nimport Circle from 'ol/style/Circle';\nimport Fill from 'ol/style/Fill';\nimport Stroke from 'ol/style/Stroke';\n\nimport VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\n\nimport { FaRegDotCircle } from 'react-icons/fa';\n\nconst propTypes = {\n /**\n * CSS class of the button.\n */\n className: PropTypes.string,\n\n /**\n * Children content of the Geolocation button.\n */\n children: PropTypes.node,\n\n /**\n * An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\n map: PropTypes.instanceOf(OLMap).isRequired,\n\n /**\n * Function triggered when geolocating is not successful.\n */\n onError: PropTypes.func,\n\n /**\n * Function triggered after successful geoLocation calls. Takes the ol/map, the current lat/lon coordinate and the component instance as arguments.\n */\n onSuccess: PropTypes.func,\n\n /**\n * Function triggered after the geolocation is activated. Takes the ol/map and the component instance as arguments.\n */\n onActivate: PropTypes.func,\n\n /**\n * Function triggered after the geolocation is deactivated. Takes the ol/map and the component instance as arguments..\n */\n onDeactivate: PropTypes.func,\n\n /**\n * If true, the map is not centered after it has been dragged once.\n */\n noCenterAfterDrag: PropTypes.bool,\n\n /**\n * If true, the map will constantly recenter to the current Position\n */\n alwaysRecenterToPosition: PropTypes.bool,\n\n /**\n * Color (Number array with rgb values) or style function.\n * If a color is given, the style is animated.\n */\n colorOrStyleFunc: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.number),\n PropTypes.func,\n ]),\n};\n\nconst defaultProps = {\n className: 'rs-geolocation',\n children: <FaRegDotCircle focusable={false} />,\n onError: () => {},\n onSuccess: () => {},\n onActivate: () => {},\n onDeactivate: () => {},\n noCenterAfterDrag: false,\n alwaysRecenterToPosition: true,\n colorOrStyleFunc: [235, 0, 0],\n};\n\n/**\n * The GeoLocation component creates a button to display the current device's location on an\n * [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\nclass Geolocation extends PureComponent {\n constructor(props) {\n super(props);\n\n this.layer = new VectorLayer({\n source: new VectorSource(),\n });\n\n this.isRecenteringToPosition = true;\n\n this.state = {\n active: false,\n };\n this.point = undefined;\n }\n\n componentWillUnmount() {\n this.deactivate();\n }\n\n toggle() {\n const { active } = this.state;\n const { onError } = this.props;\n const geolocation = 'geolocation' in navigator;\n\n if (!geolocation) {\n onError();\n } else if (!active) {\n this.activate();\n } else {\n this.deactivate();\n }\n }\n\n error() {\n const { onError } = this.props;\n\n this.deactivate();\n onError();\n }\n\n deactivate() {\n const { map, onDeactivate } = this.props;\n window.clearInterval(this.interval);\n this.layer.setMap(null);\n navigator.geolocation.clearWatch(this.watch);\n\n this.setState({\n active: false,\n });\n\n this.isRecenteringToPosition = true;\n this.point = undefined;\n onDeactivate(map, this);\n unByKey(this.dragListener);\n }\n\n activate() {\n const { map, noCenterAfterDrag, onActivate } = this.props;\n\n this.projection = map.getView().getProjection().getCode();\n this.point = new Point([0, 0]);\n this.highlight();\n this.layer.setMap(map);\n this.setState({ active: true });\n\n this.watch = navigator.geolocation.watchPosition(\n this.update.bind(this),\n this.error.bind(this),\n {\n enableHighAccuracy: true,\n },\n );\n\n if (noCenterAfterDrag) {\n this.dragListener = map.on('pointerdrag', () => {\n this.isRecenteringToPosition = false;\n });\n }\n\n onActivate(map, this);\n }\n\n update({ coords: { latitude, longitude } }) {\n const { map, alwaysRecenterToPosition, onSuccess } = this.props;\n\n const position = transform(\n [longitude, latitude],\n 'EPSG:4326',\n this.projection,\n );\n this.point.setCoordinates(position);\n\n if (this.isRecenteringToPosition) {\n map.getView().setCenter(position);\n if (!alwaysRecenterToPosition) {\n this.isRecenteringToPosition = false;\n }\n }\n\n onSuccess(map, [latitude, longitude], this);\n }\n\n highlight() {\n const { colorOrStyleFunc } = this.props;\n const feature = new Feature({\n geometry: this.point,\n });\n\n if (Array.isArray(colorOrStyleFunc)) {\n const color = colorOrStyleFunc;\n\n let decrease = true;\n let opacity = 0.5;\n let rotation = 0;\n\n window.clearInterval(this.interval);\n this.interval = window.setInterval(() => {\n rotation += 0.03;\n decrease = opacity < 0.1 ? false : decrease;\n decrease = opacity > 0.5 ? true : decrease;\n opacity += decrease ? -0.03 : 0.03;\n if (feature) {\n feature.changed();\n }\n }, 50);\n\n feature.setStyle(() => {\n const circleStyle = new Style({\n image: new Circle({\n radius: 20,\n rotation,\n fill: new Fill({\n color: 'rgba(255, 255, 255, 0.01)',\n }),\n stroke: new Stroke({\n lineDash: [30, 10],\n width: 6,\n color: `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${opacity})`,\n }),\n }),\n });\n\n circleStyle.getImage().setRotation(rotation);\n\n return [\n new Style({\n image: new Circle({\n radius: 10,\n fill: new Fill({\n color: `rgba(${color[0]}, ${color[1]}, ${color[2]}, 0.5)`,\n }),\n }),\n }),\n circleStyle,\n ];\n });\n } else {\n feature.setStyle(colorOrStyleFunc);\n }\n\n this.layer.getSource().clear();\n this.layer.getSource().addFeature(feature);\n }\n\n render() {\n const { children, className } = this.props;\n // Remove component props from other HTML props.\n const other = Object.entries(this.props).reduce((props, [key, value]) => {\n return propTypes[key] ? props : { ...props, [key]: value };\n }, {});\n const { active } = this.state;\n\n return (\n <div\n role=\"button\"\n tabIndex=\"0\"\n className={`${className} ${active ? 'rs-active' : ''}`}\n onClick={() => {\n return this.toggle();\n }}\n onKeyPress={(e) => {\n return e.which === 13 && this.toggle();\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...other}\n >\n {children}\n </div>\n );\n }\n}\n\nGeolocation.propTypes = propTypes;\nGeolocation.defaultProps = defaultProps;\n\nexport default Geolocation;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/Geolocation/index.js"],
|
|
4
|
+
"sourcesContent": ["export { default } from './Geolocation';\n"],
|
|
5
|
+
"mappings": "AAAA,wBAAwB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|