mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
docs: address review scope and feature placement for #1032
This commit is contained in:
1 parent
ba58a5ec50
commit
f67888be00
3 files changed
+25
-16
No files matched your search
@@ -17,6 +17,9 @@
|
|||||||
|
|
||||||
- Street Level requests count each tile once when dateline bounds overlap at coarse zoom levels.
|
- Street Level requests count each tile once when dateline bounds overlap at coarse zoom levels.
|
||||||
|
|
||||||
|
- Street Level counts unique tiles before ranking so overlapping dateline halves
|
||||||
|
in polar views do not waste slots in the 16-tile overview budget.
|
||||||
|
|
||||||
- Treat explicitly current, complete empty vessel coverage as a successful update,
|
- Treat explicitly current, complete empty vessel coverage as a successful update,
|
||||||
clearing obsolete contacts while retaining stale or incomplete snapshots.
|
clearing obsolete contacts while retaining stale or incomplete snapshots.
|
||||||
|
|
||||||
|
|||||||
@@ -3122,6 +3122,10 @@ sequence lines below 60 km; the proxy strips the unused `image` layer from z14
|
|||||||
tiles (12 MB → ~80 KB) and shares one upstream fetch between concurrent
|
tiles (12 MB → ~80 KB) and shares one upstream fetch between concurrent
|
||||||
requests for a tile.
|
requests for a tile.
|
||||||
|
|
||||||
|
Mapillary coverage ranks unique tile addresses before applying the 16-tile
|
||||||
|
overview budget. Overlapping dateline halves in a polar view therefore do not
|
||||||
|
waste overview slots on the same tile; loading already skips duplicate keys.
|
||||||
|
|
||||||
On Google 3D (`photoreal`) at street zoom (in below 1,400 m above ground, out
|
On Google 3D (`photoreal`) at street zoom (in below 1,400 m above ground, out
|
||||||
above 1,800 m) the surface mode switches from `draped` to `terrain`: draped
|
above 1,800 m) the surface mode switches from `draped` to `terrain`: draped
|
||||||
lines land on roofs and tree tops, so `groundCast.js` instead places lines,
|
lines land on roofs and tree tops, so `groundCast.js` instead places lines,
|
||||||
@@ -5310,8 +5314,3 @@ datacenters, dams and the Nepal locator retain that shared credit while displaye
|
|||||||
|
|
||||||
Military fragments stitch by source identity. Different mapped parcels merge only
|
Military fragments stitch by source identity. Different mapped parcels merge only
|
||||||
when their footprints touch or contain one another, never across a seam tolerance gap.
|
when their footprints touch or contain one another, never across a seam tolerance gap.
|
||||||
|
|
||||||
|
|
||||||
### fix(street-level): deduplicate overlapping dateline tile halves
|
|
||||||
|
|
||||||
Deduplicate tile addresses before ranking, truncating and reporting total coverage. Dateline ordering and the existing focus policy remain in control.
|
|
||||||
@@ -1,15 +1,22 @@
|
|||||||
import test from 'node:test';
|
import test from 'node:test';
|
||||||
import assert from 'node:assert/strict';
|
import assert from 'node:assert/strict';
|
||||||
import { tilesForBbox } from './tileMath.js';
|
import { tilesForBbox } from './tileMath.js';
|
||||||
test('coarse dateline coverage counts each tile exactly once', () => {
|
|
||||||
for (const z of [0, 1, 2]) {
|
test('reachable polar dateline coverage ranks 24 distinct tiles before overview truncation', () => {
|
||||||
const result = tilesForBbox([170, -1, -170, 1], z);
|
// coverage uses the actual view bbox above zoom 1; polar views can wrap.
|
||||||
const keys = result.tiles.map((t) => `${t.x}/${t.y}/${t.z}`);
|
const bbox = [-10, 60, -20, 85];
|
||||||
assert.equal(new Set(keys).size, keys.length);
|
const result = tilesForBbox(bbox, 3);
|
||||||
assert.equal(result.total, keys.length);
|
const keys = result.tiles.map((tile) => `${tile.x}/${tile.y}/${tile.z}`);
|
||||||
const limited = tilesForBbox([170, -1, -170, 1], z, { limit: 1 });
|
assert.equal(keys.length, 24);
|
||||||
assert.equal(limited.total, keys.length);
|
assert.equal(new Set(keys).size, 24);
|
||||||
assert.equal(limited.truncated, keys.length > 1);
|
assert.equal(result.total, 24);
|
||||||
assert.equal(limited.tiles.length, 1);
|
assert.equal(result.truncated, false);
|
||||||
}
|
const overview = tilesForBbox(bbox, 3, { limit: 16 });
|
||||||
|
assert.equal(overview.total, 24);
|
||||||
|
assert.equal(overview.tiles.length, 16);
|
||||||
|
assert.equal(
|
||||||
|
new Set(overview.tiles.map((tile) => `${tile.x}/${tile.y}/${tile.z}`)).size,
|
||||||
|
16,
|
||||||
|
);
|
||||||
|
assert.equal(overview.truncated, true);
|
||||||
});
|
});
|
||||||
Reference in new issue
Block a user