fix: disable compass when resetting north
This commit is contained in:
@@ -117,11 +117,7 @@ const map = new ol.Map({
|
|||||||
createVisibleLayersExtentControl(),
|
createVisibleLayersExtentControl(),
|
||||||
createAreaZoomControl(),
|
createAreaZoomControl(),
|
||||||
...(shouldShowDeviceCompassControl() ? [createDeviceCompassControl()] : []),
|
...(shouldShowDeviceCompassControl() ? [createDeviceCompassControl()] : []),
|
||||||
new ol.control.Rotate({
|
createNorthPointerControl(),
|
||||||
autoHide: true,
|
|
||||||
label: createNorthPointerIcon(),
|
|
||||||
tipLabel: "Reset map orientation to north",
|
|
||||||
}),
|
|
||||||
]),
|
]),
|
||||||
layers: [
|
layers: [
|
||||||
softBasemapLayer,
|
softBasemapLayer,
|
||||||
@@ -201,6 +197,25 @@ function createNorthPointerIcon() {
|
|||||||
return icon;
|
return icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createNorthPointerControl() {
|
||||||
|
const control = new ol.control.Rotate({
|
||||||
|
autoHide: true,
|
||||||
|
label: createNorthPointerIcon(),
|
||||||
|
tipLabel: "Reset map orientation to north",
|
||||||
|
});
|
||||||
|
|
||||||
|
// Resetting the view while compass orientation remains subscribed lets the
|
||||||
|
// next device event rotate it again. Stop the subscription when the north
|
||||||
|
// pointer is used so its reset remains in effect.
|
||||||
|
control.element.querySelector("button").addEventListener("click", () => {
|
||||||
|
if (deviceCompassActive) {
|
||||||
|
stopDeviceCompass();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return control;
|
||||||
|
}
|
||||||
|
|
||||||
function createVisibleLayersExtentControl() {
|
function createVisibleLayersExtentControl() {
|
||||||
const element = document.createElement("div");
|
const element = document.createElement("div");
|
||||||
element.className = "ol-visible-layers-extent ol-unselectable ol-control";
|
element.className = "ol-visible-layers-extent ol-unselectable ol-control";
|
||||||
|
|||||||
Reference in New Issue
Block a user