Using 512x512 Tile Size TileLayers in a map with ESRI Basemaps

853
5
Jump to solution
10-27-2023 02:01 PM
RyanSutcliffe
Occasional Contributor II

I have a custom Raster TileLayer in a map that works with a 512x512 tiling scheme. But when I try to switch from a 2D MapView to a 3D SceneView the layer fails to load. Error message is:

The tiling scheme of this layer is incompatible with the tiling scheme of the surface

That's because my custom layer is drawing with 512x512 tile size I think. The docs say:

Raster API tiles only work when all other layers have same tiling size. (link

My map is using, of course, an ESRI Basemap (I think ESRI ArcGIS Maps SDK for JavaScript maps require a basemap layer right?). I assume then that effectively I have to use 256x256 tiles unless I build my own custom basemap layer? Am I interpreting this right?

I am hoping that others or someone at ESRI can clarify that I am reading this right. I'd like to clarify that this is the case before I post over in Ideas asking if it is possible and on any roadmap to support mixed tile sizes in 3D Scenes.  

I haven't tried yet a custom basemap layer. I also haven't tried maintaining a separate Map instance for each SceneView and MapView because that's a lot of rework in my app.

I have tried removing and reloading the custom Raster TileLayer every time the user switches between 2D and 3D. It's really slow as the layer has to completely reload and redraw before we can even spin up the 3D view.

 

1 Solution

Accepted Solutions
AndreasUlmer
Esri Contributor

Raster API tiles only work when all other layers have same tiling size.

Correct. In SceneView tiling scheme of all (tiled) layers must match. First layer that is loaded determines the scheme (typically the first basemap layer).

FYI: This limitation in SceneView stems from the fact that in contrast to top-down-only MapView, oblique views in SceneView requires tiles to be displayed in different scales (different distance to camera). Mixing different tiling schemes would require the current single-tiling-pattern of the ground surface to be extended to support multiple overlayed tiling patterns.

 

I think ESRI ArcGIS Maps SDK for JavaScript maps require a basemap layer right?

No, a basemap layer is not required (was the case in older versions but not anymore).
If you do not need the basemap, maybe removing it is the quickest "fix" for your case?

 

 

 

View solution in original post

5 Replies
AndreasUlmer
Esri Contributor

Raster API tiles only work when all other layers have same tiling size.

Correct. In SceneView tiling scheme of all (tiled) layers must match. First layer that is loaded determines the scheme (typically the first basemap layer).

FYI: This limitation in SceneView stems from the fact that in contrast to top-down-only MapView, oblique views in SceneView requires tiles to be displayed in different scales (different distance to camera). Mixing different tiling schemes would require the current single-tiling-pattern of the ground surface to be extended to support multiple overlayed tiling patterns.

 

I think ESRI ArcGIS Maps SDK for JavaScript maps require a basemap layer right?

No, a basemap layer is not required (was the case in older versions but not anymore).
If you do not need the basemap, maybe removing it is the quickest "fix" for your case?

 

 

 

RyanSutcliffe
Occasional Contributor II

Thanks for the clarification. We've seen performance benefits from using 512x512 tile sizes over 256x256 on high-res or large screens. Removing the basemap isn't really ideal although I confirmed that it works. If supporting mixed tile sizes (even limited to 256 and 512) in 3D is complex, perhaps another idea would be ESRI 512x512 basemaps? Something I can raise over in ideas.

0 Kudos
AndreasUlmer
Esri Contributor

We've seen performance benefits from using 512x512 tile sizes over 256x256 on high-res or large screens.

Oh that's interesting! Would it be possible to share some more specific details (either here or DM if you prefer)? What particular improvements? Improved FPS? Faster loading of data?
Definitely something we'd like to hear more about.

I assume a 512 tile cover the same area as 4 256 tiles (and not the same area at 4x resolution)? AFAICT this reduces the number of network requests to 1/4, which could indeed help with certain aspects of performance. The whole terrain is then split less granular (again 1/4 tiles), I wonder if this comes with any downsides.


If supporting mixed tile sizes (even limited to 256 and 512) in 3D is complex

Mixing arbitrary tiling schemes is tough: Tiling is at the core of the terrain logic and controls a lot of both internal and user-facing behavior. Mixing 256 and 512 would definitely be less tricky but still not a freebie.

0 Kudos
RyanSutcliffe
Occasional Contributor II

The testing we did was far from anything authoritative but we noted on comparison that because of browser  limits of 6(?) concurrent fetches to a domain it was noticeably faster to download 512x512 tiles due to less fetches. We looked at load time of a static area on app load. Of course this was done on large hi-res screens with fast CPU. Results would probably vary based on device.

0 Kudos
RyanSutcliffe
Occasional Contributor II

Posted request for 512x512 3D Raster Tile layer support or 512x512 tiled basemaps here! Go give it a kudos to get this idea traction.

0 Kudos