From 22ee6febf8057cf70b12f6e596c5b7e001be765c Mon Sep 17 00:00:00 2001 From: Matthias Wirth Date: Mon, 21 Dec 2020 17:45:42 +0100 Subject: [PATCH] make the first loading sequence of tiles even better --- html/script.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/html/script.js b/html/script.js index 9444291..a47d6af 100644 --- a/html/script.js +++ b/html/script.js @@ -4178,6 +4178,19 @@ function trailReaper() { } } +function setIndexDistance(index, center, coords) { + if (index >= 1000) { + globeIndexDist[index] = ol.sphere.getDistance(center, coords); + return; + } + let tile = globeIndexSpecialTiles[index]; + let min = ol.sphere.getDistance(center, [tile[1], tile[0]]); + min = Math.min(min, ol.sphere.getDistance(center, [tile[1], tile[2]])); + min = Math.min(min, ol.sphere.getDistance(center, [tile[3], tile[0]])); + min = Math.min(min, ol.sphere.getDistance(center, [tile[3], tile[2]])); + globeIndexDist[index] = min; +} + function globeIndexes() { const center = ol.proj.toLonLat(OLMap.getView().getCenter()); if (mapIsVisible || lastGlobeExtent == null) { @@ -4232,7 +4245,7 @@ function globeIndexes() { let index = globe_index(lat, lon); //console.log(lat + ' ' + lon + ' ' + index); if (!indexes.includes(index)) { - globeIndexDist[index] = ol.sphere.getDistance(center, [lon, lat]); + setIndexDistance(index, center, [lon, lat]); indexes.push(index); } } @@ -4248,20 +4261,6 @@ function globe_index(lat, lon) { lat = grid * Math.floor((lat + 90) / grid) - 90; lon = grid * Math.floor((lon + 180) / grid) - 180; - /* - for (let i = 0; i < globeIndexSpecialTiles.length; i++) { - let tile = globeIndexSpecialTiles[i]; - if (lat >= tile.south && lat < tile.north) { - if (tile.west < tile.east && lon >= tile.west && lon < tile.east) { - return i; - } - if (tile.west > tile.east && (lon >= tile.west || lon < tile.east)) { - return i; - } - } - } - */ - let i = Math.floor((lat+90) / grid); let j = Math.floor((lon+180) / grid);