diff --git a/html/script.js b/html/script.js
index c5f5517..accbc5a 100644
--- a/html/script.js
+++ b/html/script.js
@@ -69,6 +69,7 @@ let noVanish = false;
let filterTracks = false; // altitude filter: don't filter planes but rather their tracks by altitude
let refreshId = 0;
let lastFetch = 0;
+let actualOutline = {};
let globeIndexNow = {};
let globeIndexDist = {};
let globeIndexSpecialLookup = {};
@@ -1883,7 +1884,7 @@ function setIntervalTimers() {
fetchPfData();
}
if (receiverJson && receiverJson.outlineJson) {
- timers.drawOutline = window.setInterval(drawOutlineJson, 15000);
+ timers.drawOutline = window.setInterval(drawOutlineJson, actualOutline.refresh);
drawOutlineJson();
}
}
@@ -2409,9 +2410,14 @@ function initMap() {
});
- if (receiverJson && receiverJson.outlineJson) {
- actualOutlineFeatures = new ol.source.Vector();
- actualOutlineStyle = new ol.style.Style({
+ actualOutline.enabled = multiOutline || (receiverJson && receiverJson.outlineJson);
+
+ if (actualOutline.enabled) {
+ actualOutline.refresh = 15000;
+ actualOutline.url = multiOutline ? 'data/multiOutline.json' : 'data/outline.json';
+
+ actualOutline.features = new ol.source.Vector();
+ actualOutline.style = new ol.style.Style({
fill: null,
stroke: new ol.style.Stroke({
color: actual_range_outline_color,
@@ -2419,17 +2425,17 @@ function initMap() {
lineDash: actual_range_outline_dash,
}),
});
- actualOutlineLayer = new ol.layer.Vector({
+ actualOutline.layer = new ol.layer.Vector({
name: 'actualRangeOutline',
type: 'overlay',
title: 'actual range outline',
- source: actualOutlineFeatures,
+ source: actualOutline.features,
zIndex: 101,
renderBuffer: renderBuffer,
- style: actualOutlineStyle,
+ style: actualOutline.style,
visible: actual_range_show,
});
- layers.push(actualOutlineLayer);
+ layers.push(actualOutline.layer);
}
if (calcOutlineData) {
calcOutlineLayer = new ol.layer.Vector({
@@ -6615,22 +6621,14 @@ function drawUpintheair() {
}
}
}
-let actualOutlineLayer;
-let actualOutlineFeatures;
-let actualOutlineStyle;
function drawOutlineJson() {
- if (!(multiOutline || (receiverJson && receiverJson.outlineJson)))
- return;
- let outlineUrl = 'data/outline.json';
- if (multiOutline) {
- outlineUrl = 'data/multiOutline.json';
- }
- let request = jQuery.ajax({ url: outlineUrl,
+ let request = jQuery.ajax({ url: actualOutline.url,
cache: false,
+ timeout: actualOutline.refresh,
dataType: 'json' });
request.done(function(data) {
- actualOutlineFeatures.clear();
+ actualOutline.features.clear();
let points = [];
if (data.multiRange) {
points = data.multiRange
@@ -6651,7 +6649,7 @@ function drawOutlineJson() {
const proj = ol.proj.fromLonLat([lon, lat]);
if (!geom || (lastLon && Math.abs(lon - lastLon) > 270)) {
geom = new ol.geom.LineString([proj]);
- actualOutlineFeatures.addFeature(new ol.Feature(geom));
+ actualOutline.features.addFeature(new ol.Feature(geom));
} else {
geom.appendCoordinate(proj);
}