@reearth/ezu 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bundler/ezu.d.ts CHANGED
@@ -222,18 +222,25 @@ export class Renderer {
222
222
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
223
  * centre `[0, 0]`).
224
224
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
225
+ * Cross-tile label collision and edge-continuous DEM/raster shading
226
+ * are the only things that read neighbours, and only for the sources
227
+ * they name. Pass each offset from this list to
228
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
229
+ * what the recipe needs — neither a blind 3×3 per source nor, more
230
+ * costly, a window short of what a stitched source wanted. An empty
231
+ * array means the centre tile is enough.
232
232
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
233
+ * What comes back depends on the source's kind. A vector source
234
+ * answers from the graph: a node that wants a neighbour names it,
235
+ * and cross-tile label collision is usually the only thing that
236
+ * does, so the list is often empty. A `dem` or `raster` source
237
+ * answers from its own `neighbor-fetch`, which defaults to on and
238
+ * means the whole 3×3 — those bind as one stitched canvas, and a
239
+ * neighbour left unbound is not a missing collision candidate but a
240
+ * pad filled by clamping the tile's own edge, which shows up as a
241
+ * seam in whatever samples it. `neighbor-fetch: false` reports
242
+ * nothing whatever the graph asks for; so does a source no node in
243
+ * the graph reads.
237
244
  *
238
245
  * Throws `UnknownSource` if `name` is not declared in the style.
239
246
  */
@@ -282,6 +289,14 @@ export class Renderer {
282
289
  * the maxzoom of each source keeps a second copy of something the style
283
290
  * already states, and the two drift.
284
291
  *
292
+ * `x` and `y` may be off the tile grid, which is what a host walking
293
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
294
+ * the western neighbour of `z/0/y` is the real tile at the far side
295
+ * of the world. `y` does not wrap — there is no tile above the north
296
+ * pole — and an out-of-range row comes back unchanged, so the fetch
297
+ * for it misses and the stitch clamps that edge, which is what the
298
+ * pole should look like.
299
+ *
285
300
  * Throws `UnknownSource` if `name` is not declared in the style.
286
301
  */
287
302
  sourceTile(name: string, z: number, x: number, y: number): any;
package/bundler/ezu_bg.js CHANGED
@@ -377,18 +377,25 @@ export class Renderer {
377
377
  * `source`, as an array of `[dx, dy]` pairs (never including the
378
378
  * centre `[0, 0]`).
379
379
  *
380
- * Cross-tile label collision and edge-continuous DEM shading are the
381
- * only things that read neighbours, and only for the sources they
382
- * name. A host that fetches the full 3×3 window unconditionally
383
- * therefore pays for up to eight tiles it will not look at; passing
384
- * each offset from this list to `bindSource(name, bytes, { coord })`
385
- * fetches exactly what the recipe needs. An empty array means the
386
- * centre tile is enough.
380
+ * Cross-tile label collision and edge-continuous DEM/raster shading
381
+ * are the only things that read neighbours, and only for the sources
382
+ * they name. Pass each offset from this list to
383
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
384
+ * what the recipe needs — neither a blind 3×3 per source nor, more
385
+ * costly, a window short of what a stitched source wanted. An empty
386
+ * array means the centre tile is enough.
387
387
  *
388
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
389
- * reports no offsets whatever the graph asks for: the style has said
390
- * not to stitch a neighbourhood for it, and this list is what a host
391
- * fetches from.
388
+ * What comes back depends on the source's kind. A vector source
389
+ * answers from the graph: a node that wants a neighbour names it,
390
+ * and cross-tile label collision is usually the only thing that
391
+ * does, so the list is often empty. A `dem` or `raster` source
392
+ * answers from its own `neighbor-fetch`, which defaults to on and
393
+ * means the whole 3×3 — those bind as one stitched canvas, and a
394
+ * neighbour left unbound is not a missing collision candidate but a
395
+ * pad filled by clamping the tile's own edge, which shows up as a
396
+ * seam in whatever samples it. `neighbor-fetch: false` reports
397
+ * nothing whatever the graph asks for; so does a source no node in
398
+ * the graph reads.
392
399
  *
393
400
  * Throws `UnknownSource` if `name` is not declared in the style.
394
401
  * @param {string} name
@@ -460,6 +467,14 @@ export class Renderer {
460
467
  * the maxzoom of each source keeps a second copy of something the style
461
468
  * already states, and the two drift.
462
469
  *
470
+ * `x` and `y` may be off the tile grid, which is what a host walking
471
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
472
+ * the western neighbour of `z/0/y` is the real tile at the far side
473
+ * of the world. `y` does not wrap — there is no tile above the north
474
+ * pole — and an out-of-range row comes back unchanged, so the fetch
475
+ * for it misses and the stitch clamps that edge, which is what the
476
+ * pole should look like.
477
+ *
463
478
  * Throws `UnknownSource` if `name` is not declared in the style.
464
479
  * @param {string} name
465
480
  * @param {number} z
Binary file
package/nodejs/ezu.d.ts CHANGED
@@ -222,18 +222,25 @@ export class Renderer {
222
222
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
223
  * centre `[0, 0]`).
224
224
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
225
+ * Cross-tile label collision and edge-continuous DEM/raster shading
226
+ * are the only things that read neighbours, and only for the sources
227
+ * they name. Pass each offset from this list to
228
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
229
+ * what the recipe needs — neither a blind 3×3 per source nor, more
230
+ * costly, a window short of what a stitched source wanted. An empty
231
+ * array means the centre tile is enough.
232
232
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
233
+ * What comes back depends on the source's kind. A vector source
234
+ * answers from the graph: a node that wants a neighbour names it,
235
+ * and cross-tile label collision is usually the only thing that
236
+ * does, so the list is often empty. A `dem` or `raster` source
237
+ * answers from its own `neighbor-fetch`, which defaults to on and
238
+ * means the whole 3×3 — those bind as one stitched canvas, and a
239
+ * neighbour left unbound is not a missing collision candidate but a
240
+ * pad filled by clamping the tile's own edge, which shows up as a
241
+ * seam in whatever samples it. `neighbor-fetch: false` reports
242
+ * nothing whatever the graph asks for; so does a source no node in
243
+ * the graph reads.
237
244
  *
238
245
  * Throws `UnknownSource` if `name` is not declared in the style.
239
246
  */
@@ -282,6 +289,14 @@ export class Renderer {
282
289
  * the maxzoom of each source keeps a second copy of something the style
283
290
  * already states, and the two drift.
284
291
  *
292
+ * `x` and `y` may be off the tile grid, which is what a host walking
293
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
294
+ * the western neighbour of `z/0/y` is the real tile at the far side
295
+ * of the world. `y` does not wrap — there is no tile above the north
296
+ * pole — and an out-of-range row comes back unchanged, so the fetch
297
+ * for it misses and the stitch clamps that edge, which is what the
298
+ * pole should look like.
299
+ *
285
300
  * Throws `UnknownSource` if `name` is not declared in the style.
286
301
  */
287
302
  sourceTile(name: string, z: number, x: number, y: number): any;
package/nodejs/ezu.js CHANGED
@@ -380,18 +380,25 @@ class Renderer {
380
380
  * `source`, as an array of `[dx, dy]` pairs (never including the
381
381
  * centre `[0, 0]`).
382
382
  *
383
- * Cross-tile label collision and edge-continuous DEM shading are the
384
- * only things that read neighbours, and only for the sources they
385
- * name. A host that fetches the full 3×3 window unconditionally
386
- * therefore pays for up to eight tiles it will not look at; passing
387
- * each offset from this list to `bindSource(name, bytes, { coord })`
388
- * fetches exactly what the recipe needs. An empty array means the
389
- * centre tile is enough.
383
+ * Cross-tile label collision and edge-continuous DEM/raster shading
384
+ * are the only things that read neighbours, and only for the sources
385
+ * they name. Pass each offset from this list to
386
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
387
+ * what the recipe needs — neither a blind 3×3 per source nor, more
388
+ * costly, a window short of what a stitched source wanted. An empty
389
+ * array means the centre tile is enough.
390
390
  *
391
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
392
- * reports no offsets whatever the graph asks for: the style has said
393
- * not to stitch a neighbourhood for it, and this list is what a host
394
- * fetches from.
391
+ * What comes back depends on the source's kind. A vector source
392
+ * answers from the graph: a node that wants a neighbour names it,
393
+ * and cross-tile label collision is usually the only thing that
394
+ * does, so the list is often empty. A `dem` or `raster` source
395
+ * answers from its own `neighbor-fetch`, which defaults to on and
396
+ * means the whole 3×3 — those bind as one stitched canvas, and a
397
+ * neighbour left unbound is not a missing collision candidate but a
398
+ * pad filled by clamping the tile's own edge, which shows up as a
399
+ * seam in whatever samples it. `neighbor-fetch: false` reports
400
+ * nothing whatever the graph asks for; so does a source no node in
401
+ * the graph reads.
395
402
  *
396
403
  * Throws `UnknownSource` if `name` is not declared in the style.
397
404
  * @param {string} name
@@ -463,6 +470,14 @@ class Renderer {
463
470
  * the maxzoom of each source keeps a second copy of something the style
464
471
  * already states, and the two drift.
465
472
  *
473
+ * `x` and `y` may be off the tile grid, which is what a host walking
474
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
475
+ * the western neighbour of `z/0/y` is the real tile at the far side
476
+ * of the world. `y` does not wrap — there is no tile above the north
477
+ * pole — and an out-of-range row comes back unchanged, so the fetch
478
+ * for it misses and the stitch clamps that edge, which is what the
479
+ * pole should look like.
480
+ *
466
481
  * Throws `UnknownSource` if `name` is not declared in the style.
467
482
  * @param {string} name
468
483
  * @param {number} z
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reearth/ezu",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "Painterly map renderer — WebAssembly bindings",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "repository": {
@@ -222,18 +222,25 @@ export class Renderer {
222
222
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
223
  * centre `[0, 0]`).
224
224
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
225
+ * Cross-tile label collision and edge-continuous DEM/raster shading
226
+ * are the only things that read neighbours, and only for the sources
227
+ * they name. Pass each offset from this list to
228
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
229
+ * what the recipe needs — neither a blind 3×3 per source nor, more
230
+ * costly, a window short of what a stitched source wanted. An empty
231
+ * array means the centre tile is enough.
232
232
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
233
+ * What comes back depends on the source's kind. A vector source
234
+ * answers from the graph: a node that wants a neighbour names it,
235
+ * and cross-tile label collision is usually the only thing that
236
+ * does, so the list is often empty. A `dem` or `raster` source
237
+ * answers from its own `neighbor-fetch`, which defaults to on and
238
+ * means the whole 3×3 — those bind as one stitched canvas, and a
239
+ * neighbour left unbound is not a missing collision candidate but a
240
+ * pad filled by clamping the tile's own edge, which shows up as a
241
+ * seam in whatever samples it. `neighbor-fetch: false` reports
242
+ * nothing whatever the graph asks for; so does a source no node in
243
+ * the graph reads.
237
244
  *
238
245
  * Throws `UnknownSource` if `name` is not declared in the style.
239
246
  */
@@ -282,6 +289,14 @@ export class Renderer {
282
289
  * the maxzoom of each source keeps a second copy of something the style
283
290
  * already states, and the two drift.
284
291
  *
292
+ * `x` and `y` may be off the tile grid, which is what a host walking
293
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
294
+ * the western neighbour of `z/0/y` is the real tile at the far side
295
+ * of the world. `y` does not wrap — there is no tile above the north
296
+ * pole — and an out-of-range row comes back unchanged, so the fetch
297
+ * for it misses and the stitch clamps that edge, which is what the
298
+ * pole should look like.
299
+ *
285
300
  * Throws `UnknownSource` if `name` is not declared in the style.
286
301
  */
287
302
  sourceTile(name: string, z: number, x: number, y: number): any;
@@ -377,18 +377,25 @@ export class Renderer {
377
377
  * `source`, as an array of `[dx, dy]` pairs (never including the
378
378
  * centre `[0, 0]`).
379
379
  *
380
- * Cross-tile label collision and edge-continuous DEM shading are the
381
- * only things that read neighbours, and only for the sources they
382
- * name. A host that fetches the full 3×3 window unconditionally
383
- * therefore pays for up to eight tiles it will not look at; passing
384
- * each offset from this list to `bindSource(name, bytes, { coord })`
385
- * fetches exactly what the recipe needs. An empty array means the
386
- * centre tile is enough.
380
+ * Cross-tile label collision and edge-continuous DEM/raster shading
381
+ * are the only things that read neighbours, and only for the sources
382
+ * they name. Pass each offset from this list to
383
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
384
+ * what the recipe needs — neither a blind 3×3 per source nor, more
385
+ * costly, a window short of what a stitched source wanted. An empty
386
+ * array means the centre tile is enough.
387
387
  *
388
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
389
- * reports no offsets whatever the graph asks for: the style has said
390
- * not to stitch a neighbourhood for it, and this list is what a host
391
- * fetches from.
388
+ * What comes back depends on the source's kind. A vector source
389
+ * answers from the graph: a node that wants a neighbour names it,
390
+ * and cross-tile label collision is usually the only thing that
391
+ * does, so the list is often empty. A `dem` or `raster` source
392
+ * answers from its own `neighbor-fetch`, which defaults to on and
393
+ * means the whole 3×3 — those bind as one stitched canvas, and a
394
+ * neighbour left unbound is not a missing collision candidate but a
395
+ * pad filled by clamping the tile's own edge, which shows up as a
396
+ * seam in whatever samples it. `neighbor-fetch: false` reports
397
+ * nothing whatever the graph asks for; so does a source no node in
398
+ * the graph reads.
392
399
  *
393
400
  * Throws `UnknownSource` if `name` is not declared in the style.
394
401
  * @param {string} name
@@ -460,6 +467,14 @@ export class Renderer {
460
467
  * the maxzoom of each source keeps a second copy of something the style
461
468
  * already states, and the two drift.
462
469
  *
470
+ * `x` and `y` may be off the tile grid, which is what a host walking
471
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
472
+ * the western neighbour of `z/0/y` is the real tile at the far side
473
+ * of the world. `y` does not wrap — there is no tile above the north
474
+ * pole — and an out-of-range row comes back unchanged, so the fetch
475
+ * for it misses and the stitch clamps that edge, which is what the
476
+ * pole should look like.
477
+ *
463
478
  * Throws `UnknownSource` if `name` is not declared in the style.
464
479
  * @param {string} name
465
480
  * @param {number} z
Binary file
@@ -222,18 +222,25 @@ export class Renderer {
222
222
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
223
  * centre `[0, 0]`).
224
224
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
225
+ * Cross-tile label collision and edge-continuous DEM/raster shading
226
+ * are the only things that read neighbours, and only for the sources
227
+ * they name. Pass each offset from this list to
228
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
229
+ * what the recipe needs — neither a blind 3×3 per source nor, more
230
+ * costly, a window short of what a stitched source wanted. An empty
231
+ * array means the centre tile is enough.
232
232
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
233
+ * What comes back depends on the source's kind. A vector source
234
+ * answers from the graph: a node that wants a neighbour names it,
235
+ * and cross-tile label collision is usually the only thing that
236
+ * does, so the list is often empty. A `dem` or `raster` source
237
+ * answers from its own `neighbor-fetch`, which defaults to on and
238
+ * means the whole 3×3 — those bind as one stitched canvas, and a
239
+ * neighbour left unbound is not a missing collision candidate but a
240
+ * pad filled by clamping the tile's own edge, which shows up as a
241
+ * seam in whatever samples it. `neighbor-fetch: false` reports
242
+ * nothing whatever the graph asks for; so does a source no node in
243
+ * the graph reads.
237
244
  *
238
245
  * Throws `UnknownSource` if `name` is not declared in the style.
239
246
  */
@@ -282,6 +289,14 @@ export class Renderer {
282
289
  * the maxzoom of each source keeps a second copy of something the style
283
290
  * already states, and the two drift.
284
291
  *
292
+ * `x` and `y` may be off the tile grid, which is what a host walking
293
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
294
+ * the western neighbour of `z/0/y` is the real tile at the far side
295
+ * of the world. `y` does not wrap — there is no tile above the north
296
+ * pole — and an out-of-range row comes back unchanged, so the fetch
297
+ * for it misses and the stitch clamps that edge, which is what the
298
+ * pole should look like.
299
+ *
285
300
  * Throws `UnknownSource` if `name` is not declared in the style.
286
301
  */
287
302
  sourceTile(name: string, z: number, x: number, y: number): any;
@@ -380,18 +380,25 @@ class Renderer {
380
380
  * `source`, as an array of `[dx, dy]` pairs (never including the
381
381
  * centre `[0, 0]`).
382
382
  *
383
- * Cross-tile label collision and edge-continuous DEM shading are the
384
- * only things that read neighbours, and only for the sources they
385
- * name. A host that fetches the full 3×3 window unconditionally
386
- * therefore pays for up to eight tiles it will not look at; passing
387
- * each offset from this list to `bindSource(name, bytes, { coord })`
388
- * fetches exactly what the recipe needs. An empty array means the
389
- * centre tile is enough.
383
+ * Cross-tile label collision and edge-continuous DEM/raster shading
384
+ * are the only things that read neighbours, and only for the sources
385
+ * they name. Pass each offset from this list to
386
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
387
+ * what the recipe needs — neither a blind 3×3 per source nor, more
388
+ * costly, a window short of what a stitched source wanted. An empty
389
+ * array means the centre tile is enough.
390
390
  *
391
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
392
- * reports no offsets whatever the graph asks for: the style has said
393
- * not to stitch a neighbourhood for it, and this list is what a host
394
- * fetches from.
391
+ * What comes back depends on the source's kind. A vector source
392
+ * answers from the graph: a node that wants a neighbour names it,
393
+ * and cross-tile label collision is usually the only thing that
394
+ * does, so the list is often empty. A `dem` or `raster` source
395
+ * answers from its own `neighbor-fetch`, which defaults to on and
396
+ * means the whole 3×3 — those bind as one stitched canvas, and a
397
+ * neighbour left unbound is not a missing collision candidate but a
398
+ * pad filled by clamping the tile's own edge, which shows up as a
399
+ * seam in whatever samples it. `neighbor-fetch: false` reports
400
+ * nothing whatever the graph asks for; so does a source no node in
401
+ * the graph reads.
395
402
  *
396
403
  * Throws `UnknownSource` if `name` is not declared in the style.
397
404
  * @param {string} name
@@ -463,6 +470,14 @@ class Renderer {
463
470
  * the maxzoom of each source keeps a second copy of something the style
464
471
  * already states, and the two drift.
465
472
  *
473
+ * `x` and `y` may be off the tile grid, which is what a host walking
474
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
475
+ * the western neighbour of `z/0/y` is the real tile at the far side
476
+ * of the world. `y` does not wrap — there is no tile above the north
477
+ * pole — and an out-of-range row comes back unchanged, so the fetch
478
+ * for it misses and the stitch clamps that edge, which is what the
479
+ * pole should look like.
480
+ *
466
481
  * Throws `UnknownSource` if `name` is not declared in the style.
467
482
  * @param {string} name
468
483
  * @param {number} z
Binary file
package/simd/web/ezu.d.ts CHANGED
@@ -222,18 +222,25 @@ export class Renderer {
222
222
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
223
  * centre `[0, 0]`).
224
224
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
225
+ * Cross-tile label collision and edge-continuous DEM/raster shading
226
+ * are the only things that read neighbours, and only for the sources
227
+ * they name. Pass each offset from this list to
228
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
229
+ * what the recipe needs — neither a blind 3×3 per source nor, more
230
+ * costly, a window short of what a stitched source wanted. An empty
231
+ * array means the centre tile is enough.
232
232
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
233
+ * What comes back depends on the source's kind. A vector source
234
+ * answers from the graph: a node that wants a neighbour names it,
235
+ * and cross-tile label collision is usually the only thing that
236
+ * does, so the list is often empty. A `dem` or `raster` source
237
+ * answers from its own `neighbor-fetch`, which defaults to on and
238
+ * means the whole 3×3 — those bind as one stitched canvas, and a
239
+ * neighbour left unbound is not a missing collision candidate but a
240
+ * pad filled by clamping the tile's own edge, which shows up as a
241
+ * seam in whatever samples it. `neighbor-fetch: false` reports
242
+ * nothing whatever the graph asks for; so does a source no node in
243
+ * the graph reads.
237
244
  *
238
245
  * Throws `UnknownSource` if `name` is not declared in the style.
239
246
  */
@@ -282,6 +289,14 @@ export class Renderer {
282
289
  * the maxzoom of each source keeps a second copy of something the style
283
290
  * already states, and the two drift.
284
291
  *
292
+ * `x` and `y` may be off the tile grid, which is what a host walking
293
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
294
+ * the western neighbour of `z/0/y` is the real tile at the far side
295
+ * of the world. `y` does not wrap — there is no tile above the north
296
+ * pole — and an out-of-range row comes back unchanged, so the fetch
297
+ * for it misses and the stitch clamps that edge, which is what the
298
+ * pole should look like.
299
+ *
285
300
  * Throws `UnknownSource` if `name` is not declared in the style.
286
301
  */
287
302
  sourceTile(name: string, z: number, x: number, y: number): any;
package/simd/web/ezu.js CHANGED
@@ -379,18 +379,25 @@ export class Renderer {
379
379
  * `source`, as an array of `[dx, dy]` pairs (never including the
380
380
  * centre `[0, 0]`).
381
381
  *
382
- * Cross-tile label collision and edge-continuous DEM shading are the
383
- * only things that read neighbours, and only for the sources they
384
- * name. A host that fetches the full 3×3 window unconditionally
385
- * therefore pays for up to eight tiles it will not look at; passing
386
- * each offset from this list to `bindSource(name, bytes, { coord })`
387
- * fetches exactly what the recipe needs. An empty array means the
388
- * centre tile is enough.
382
+ * Cross-tile label collision and edge-continuous DEM/raster shading
383
+ * are the only things that read neighbours, and only for the sources
384
+ * they name. Pass each offset from this list to
385
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
386
+ * what the recipe needs — neither a blind 3×3 per source nor, more
387
+ * costly, a window short of what a stitched source wanted. An empty
388
+ * array means the centre tile is enough.
389
389
  *
390
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
391
- * reports no offsets whatever the graph asks for: the style has said
392
- * not to stitch a neighbourhood for it, and this list is what a host
393
- * fetches from.
390
+ * What comes back depends on the source's kind. A vector source
391
+ * answers from the graph: a node that wants a neighbour names it,
392
+ * and cross-tile label collision is usually the only thing that
393
+ * does, so the list is often empty. A `dem` or `raster` source
394
+ * answers from its own `neighbor-fetch`, which defaults to on and
395
+ * means the whole 3×3 — those bind as one stitched canvas, and a
396
+ * neighbour left unbound is not a missing collision candidate but a
397
+ * pad filled by clamping the tile's own edge, which shows up as a
398
+ * seam in whatever samples it. `neighbor-fetch: false` reports
399
+ * nothing whatever the graph asks for; so does a source no node in
400
+ * the graph reads.
394
401
  *
395
402
  * Throws `UnknownSource` if `name` is not declared in the style.
396
403
  * @param {string} name
@@ -462,6 +469,14 @@ export class Renderer {
462
469
  * the maxzoom of each source keeps a second copy of something the style
463
470
  * already states, and the two drift.
464
471
  *
472
+ * `x` and `y` may be off the tile grid, which is what a host walking
473
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
474
+ * the western neighbour of `z/0/y` is the real tile at the far side
475
+ * of the world. `y` does not wrap — there is no tile above the north
476
+ * pole — and an out-of-range row comes back unchanged, so the fetch
477
+ * for it misses and the stitch clamps that edge, which is what the
478
+ * pole should look like.
479
+ *
465
480
  * Throws `UnknownSource` if `name` is not declared in the style.
466
481
  * @param {string} name
467
482
  * @param {number} z
Binary file
package/web/ezu.d.ts CHANGED
@@ -222,18 +222,25 @@ export class Renderer {
222
222
  * `source`, as an array of `[dx, dy]` pairs (never including the
223
223
  * centre `[0, 0]`).
224
224
  *
225
- * Cross-tile label collision and edge-continuous DEM shading are the
226
- * only things that read neighbours, and only for the sources they
227
- * name. A host that fetches the full 3×3 window unconditionally
228
- * therefore pays for up to eight tiles it will not look at; passing
229
- * each offset from this list to `bindSource(name, bytes, { coord })`
230
- * fetches exactly what the recipe needs. An empty array means the
231
- * centre tile is enough.
225
+ * Cross-tile label collision and edge-continuous DEM/raster shading
226
+ * are the only things that read neighbours, and only for the sources
227
+ * they name. Pass each offset from this list to
228
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
229
+ * what the recipe needs — neither a blind 3×3 per source nor, more
230
+ * costly, a window short of what a stitched source wanted. An empty
231
+ * array means the centre tile is enough.
232
232
  *
233
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
234
- * reports no offsets whatever the graph asks for: the style has said
235
- * not to stitch a neighbourhood for it, and this list is what a host
236
- * fetches from.
233
+ * What comes back depends on the source's kind. A vector source
234
+ * answers from the graph: a node that wants a neighbour names it,
235
+ * and cross-tile label collision is usually the only thing that
236
+ * does, so the list is often empty. A `dem` or `raster` source
237
+ * answers from its own `neighbor-fetch`, which defaults to on and
238
+ * means the whole 3×3 — those bind as one stitched canvas, and a
239
+ * neighbour left unbound is not a missing collision candidate but a
240
+ * pad filled by clamping the tile's own edge, which shows up as a
241
+ * seam in whatever samples it. `neighbor-fetch: false` reports
242
+ * nothing whatever the graph asks for; so does a source no node in
243
+ * the graph reads.
237
244
  *
238
245
  * Throws `UnknownSource` if `name` is not declared in the style.
239
246
  */
@@ -282,6 +289,14 @@ export class Renderer {
282
289
  * the maxzoom of each source keeps a second copy of something the style
283
290
  * already states, and the two drift.
284
291
  *
292
+ * `x` and `y` may be off the tile grid, which is what a host walking
293
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
294
+ * the western neighbour of `z/0/y` is the real tile at the far side
295
+ * of the world. `y` does not wrap — there is no tile above the north
296
+ * pole — and an out-of-range row comes back unchanged, so the fetch
297
+ * for it misses and the stitch clamps that edge, which is what the
298
+ * pole should look like.
299
+ *
285
300
  * Throws `UnknownSource` if `name` is not declared in the style.
286
301
  */
287
302
  sourceTile(name: string, z: number, x: number, y: number): any;
package/web/ezu.js CHANGED
@@ -379,18 +379,25 @@ export class Renderer {
379
379
  * `source`, as an array of `[dx, dy]` pairs (never including the
380
380
  * centre `[0, 0]`).
381
381
  *
382
- * Cross-tile label collision and edge-continuous DEM shading are the
383
- * only things that read neighbours, and only for the sources they
384
- * name. A host that fetches the full 3×3 window unconditionally
385
- * therefore pays for up to eight tiles it will not look at; passing
386
- * each offset from this list to `bindSource(name, bytes, { coord })`
387
- * fetches exactly what the recipe needs. An empty array means the
388
- * centre tile is enough.
382
+ * Cross-tile label collision and edge-continuous DEM/raster shading
383
+ * are the only things that read neighbours, and only for the sources
384
+ * they name. Pass each offset from this list to
385
+ * `bindSource(name, bytes, { coord })` and the render gets exactly
386
+ * what the recipe needs — neither a blind 3×3 per source nor, more
387
+ * costly, a window short of what a stitched source wanted. An empty
388
+ * array means the centre tile is enough.
389
389
  *
390
- * A `dem` or `raster` source that declares `neighbor-fetch: false`
391
- * reports no offsets whatever the graph asks for: the style has said
392
- * not to stitch a neighbourhood for it, and this list is what a host
393
- * fetches from.
390
+ * What comes back depends on the source's kind. A vector source
391
+ * answers from the graph: a node that wants a neighbour names it,
392
+ * and cross-tile label collision is usually the only thing that
393
+ * does, so the list is often empty. A `dem` or `raster` source
394
+ * answers from its own `neighbor-fetch`, which defaults to on and
395
+ * means the whole 3×3 — those bind as one stitched canvas, and a
396
+ * neighbour left unbound is not a missing collision candidate but a
397
+ * pad filled by clamping the tile's own edge, which shows up as a
398
+ * seam in whatever samples it. `neighbor-fetch: false` reports
399
+ * nothing whatever the graph asks for; so does a source no node in
400
+ * the graph reads.
394
401
  *
395
402
  * Throws `UnknownSource` if `name` is not declared in the style.
396
403
  * @param {string} name
@@ -462,6 +469,14 @@ export class Renderer {
462
469
  * the maxzoom of each source keeps a second copy of something the style
463
470
  * already states, and the two drift.
464
471
  *
472
+ * `x` and `y` may be off the tile grid, which is what a host walking
473
+ * a neighbourhood hands in: `x` wraps around the antimeridian, so
474
+ * the western neighbour of `z/0/y` is the real tile at the far side
475
+ * of the world. `y` does not wrap — there is no tile above the north
476
+ * pole — and an out-of-range row comes back unchanged, so the fetch
477
+ * for it misses and the stitch clamps that edge, which is what the
478
+ * pole should look like.
479
+ *
465
480
  * Throws `UnknownSource` if `name` is not declared in the style.
466
481
  * @param {string} name
467
482
  * @param {number} z
package/web/ezu_bg.wasm CHANGED
Binary file