Automatically zoom to GPS location if no coordinate is specified in the URL

This commit is contained in:
Pieter Vander Vennet 2021-08-26 12:15:26 +02:00
parent dad579c895
commit 61b6721342
3 changed files with 17 additions and 9 deletions

View file

@ -6,6 +6,7 @@ import {LocalStorageSource} from "../Web/LocalStorageSource";
import {VariableUiElement} from "../../UI/Base/VariableUIElement";
import BaseUIElement from "../../UI/BaseUIElement";
import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig";
import {QueryParameters} from "../Web/QueryParameters";
export default class GeoLocationHandler extends VariableUiElement {
/**
@ -94,8 +95,6 @@ export default class GeoLocationHandler extends VariableUiElement {
super(
hasLocation.map(
(hasLocationData) => {
let icon: BaseUIElement;
console.log("Determining icon:", permission.data, isActive.data, hasLocationData, isLocked.data, lastClickWithinThreeSecs.data)
if (permission.data === "denied") {
return Svg.location_refused_svg();
}
@ -167,9 +166,12 @@ export default class GeoLocationHandler extends VariableUiElement {
}
}
self.init(true);
self.init(true, true);
});
this.init(false);
const latLonGiven = QueryParameters.wasInitialized("lat") && QueryParameters.wasInitialized("lon")
this.init(false, !latLonGiven);
isLocked.addCallbackAndRunD(isLocked => {
if (isLocked) {
@ -217,7 +219,7 @@ export default class GeoLocationHandler extends VariableUiElement {
});
}
private init(askPermission: boolean) {
private init(askPermission: boolean, forceZoom: boolean) {
const self = this;
if (self._isActive.data) {
@ -231,7 +233,7 @@ export default class GeoLocationHandler extends VariableUiElement {
?.then(function (status) {
console.log("Geolocation is already", status);
if (status.state === "granted") {
self.StartGeolocating(false);
self.StartGeolocating(forceZoom);
}
self._permission.setData(status.state);
status.onchange = function () {
@ -243,10 +245,10 @@ export default class GeoLocationHandler extends VariableUiElement {
}
if (askPermission) {
self.StartGeolocating(true);
self.StartGeolocating(forceZoom);
} else if (this._previousLocationGrant.data === "granted") {
this._previousLocationGrant.setData("");
self.StartGeolocating(false);
self.StartGeolocating(forceZoom);
}
}