Skip to content

Commit c2d6e67

Browse files
committed
Refine WrappedReplayGroup logic, and fixed the issue about reset projection of sourceTile.
1 parent 90b9542 commit c2d6e67

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/renderer/canvas/GeoVectorTileLayer.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -354,10 +354,7 @@ class GeoCanvasVectorTileLayerRenderer extends CanvasVectorTileLayerRenderer {
354354

355355
const tileProjection = sourceTile.getProjection();
356356
let reproject = false;
357-
if (!equivalentProjection(projection, tileProjection)) {
358-
reproject = true;
359-
sourceTile.setProjection(projection);
360-
}
357+
361358
replayState.dirty = false;
362359
const replayGroup = new GeoCanvasReplayGroup(0, sharedExtent, resolution,
363360
pixelRatio, source.getOverlaps(), this.declutterTree_, layer.getRenderBuffer());
@@ -405,6 +402,9 @@ class GeoCanvasVectorTileLayerRenderer extends CanvasVectorTileLayerRenderer {
405402
let rendererSelf = this;
406403
let geoStyles = source.getGeoFormat().styleJsonCache.geoStyles;
407404
let createReplayGroupCallback = function (data, methodInfo) {
405+
if (!equivalentProjection(projection, tileProjection)) {
406+
reproject = true;
407+
}
408408
let replaysByZIndex = data["replays"];
409409
let featuresInfo = data["features"];
410410
let mainDrawingInstructs = data["mainDrawingInstructs"];
@@ -453,9 +453,10 @@ class GeoCanvasVectorTileLayerRenderer extends CanvasVectorTileLayerRenderer {
453453
sourceTile.setReplayGroup(layer, tile.tileCoord.toString(), replayGroup);
454454

455455
// For wrappedTileCoord set originalReplayGroup
456-
if (!isInterim && sourceTile.tileCoord.toString() !== tile.tileCoord.toString()) {
457-
sourceTile.setReplayGroup(layer, sourceTile.tileCoord.toString(), replayGroup);
456+
if (!isInterim && tile.wrappedTileCoord.toString() !== tile.tileCoord.toString()) {
457+
sourceTile.setReplayGroup(layer, tile.wrappedTileCoord.toString(), replayGroup);
458458
}
459+
459460
tile["replayCreated"] = true;
460461
sourceTile["replayCreated"] = true;
461462
// The apply tile didn't enqueue, so it has no events that refresh the map.
@@ -469,6 +470,7 @@ class GeoCanvasVectorTileLayerRenderer extends CanvasVectorTileLayerRenderer {
469470
// tile extent in tile pixel space
470471
tileProjection.setExtent(sourceTile.getExtent());
471472
}
473+
472474
let tileProjectionInfo = {};
473475
for (let name in tileProjection) {
474476
if (typeof tileProjection[name] !== "function") {
@@ -500,6 +502,10 @@ class GeoCanvasVectorTileLayerRenderer extends CanvasVectorTileLayerRenderer {
500502
workerManager.postMessage(getUid(createReplayGroupCallback), "createReplayGroup", createReplayGroupMethodInfo, createReplayGroupCallback, undefined);
501503
}
502504
else {
505+
if (!equivalentProjection(projection, tileProjection)) {
506+
reproject = true;
507+
sourceTile.setProjection(projection);
508+
}
503509
let renderer = this;
504510
var createReplayGroupFunction = function (featuresAndInstructs) {
505511
let features = undefined;

0 commit comments

Comments
 (0)