Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to use raster source with varying zoom levels? #3990

Open
jmac125 opened this issue Apr 12, 2024 · 7 comments
Open

How to use raster source with varying zoom levels? #3990

jmac125 opened this issue Apr 12, 2024 · 7 comments
Labels
need more info Further information is requested

Comments

@jmac125
Copy link

jmac125 commented Apr 12, 2024

User Story

On v3.3 i had a raster layer with data at varying zoom levels, some areas up to level 20, most up to level 10. Previously it would overzoom the tiles where i didn't have better data and get the data where i did. Now the tiles disappear when they get the 204 from tileservergl

Is there any way to use the old behavior of overzooming when dealing with a tileset with mixed zoom levels?

@HarelM
Copy link
Member

HarelM commented Apr 12, 2024

I'm not sure this change was intentional, I would consider finding the last version this worked and find the relevant PR to see what might have changed and what is the description in the PR.

@HarelM HarelM added the need more info Further information is requested label Apr 12, 2024
@jmac125
Copy link
Author

jmac125 commented Apr 12, 2024

i believe it was this PR https://github.com/maplibre/maplibre-gl-js/pull/3428/files

if i remove the

    if (data.byteLength === 0) {
        return createImageBitmap(new ImageData(1, 1));
    }

it works like it used to, (though spams the console with this err)

DOMException: The source image could not be decoded.

@HarelM
Copy link
Member

HarelM commented Apr 12, 2024

This is basically intentional, if the tile server return 204 it means that it got the request for a tile, and returned an empty tile, which will be displayed in the map as empty.
If you want to get the previous behavior you'd need to configure the tile server to return 404 - which will tell maplibre that this tile doesn't exists and there's a need to overzoom.
I hope this makes sense to you.

@xabbu42
Copy link
Contributor

xabbu42 commented May 7, 2024

I think the discussion in #161 (comment) and following is relevant here. So the original reasoning from mapbox was to use 204 for this use-case and not 404, because 404 triggers console errors.

@jmac125
Copy link
Author

jmac125 commented May 7, 2024

that makes sense. It would be ideal if there were a toggle of some sort to have overzoom without having the 404 console spam, but it's workable how it is

@wipfli
Copy link
Member

wipfli commented May 9, 2024

Just to make sure I understand the behavior of MapLibre GL JS correctly:

Say I global satellite raster tiles up to zoom 10 and then I have higher-resolution satellite raster tiles for Switzerland up to zoom 16. If I want to mix the two together in a single raster tile source I can just say the maxzoom is 16 for the overall source and for tiles outside of Switzerland for example at z14 I could just return a 404 status code and MapLibre GL JS would overzoom the z10 tiles for me?

@xabbu42
Copy link
Contributor

xabbu42 commented May 13, 2024

Thats exactly correct. The only downside of that setup is that browsers generate console messages for 404 subrequests automatically. So that setup would generate a lot of those messages and make it difficult to find 404 which are not expected and problematic among all the expected 404 messages. Thats why mapbox considered 204 as an alternative for the same behavior in the linked discussion. I never tested what their software (or maplibre-native) does in that situation though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need more info Further information is requested
Projects
None yet
Development

No branches or pull requests

4 participants