Select to view content in your preferred language

Base map not initializing with low bandwidth connections

117
5
Wednesday
Labels (2)
JustinSteventon
Regular Contributor

Hi developers,

My customers with poor internet connectivity are reporting a blank map screen.

Using winshaper (Releases · catchpoint/WebPageTest.win-shaper) I was able to reproduce this consistently. I created a custom profile: bandwidth in = 65536, bandwidth out = 65536, latency = 25ms, packet loss = 100%, buffer sizes = 150000 bytes.

Then run the sample app. Note that the if the tile cache for that basemap style has anything in it, then it seems to always work. So make sure you flush the cache before repro. It is here: %LOCALAPPDATA%\appname\cache\data8. 

JustinSteventon_0-1750899322415.png

Note that I do not think this has anything to do with licensing, because I do not get any warnings or errors there. It seems to just be dependent on whether the cache has been initialized with some data.

Would love a workaround as my app is live.

Thanks!

0 Kudos
5 Replies
bnoble0110
Esri Contributor

Hello @JustinSteventon 

Can you provide more information or an example of the workflow you are attempting that is failing due to limited network connectivity? I see you mentioning some caching so I'd like to make sure we know exactly what you're seeing to investigate properly. 

0 Kudos
JustinSteventon
Regular Contributor

Hi there,

The workflow is just using the map.

If you start with the template "ArcGIS Maps 200.7.0 Qt Quick C++ app" and do not make any changes other than adding an API key, then the map will fail (just gray screen) when there are network issues as described in the original post.

The problem is that the failure is not graceful as no overlays or anything else shows up - the map is just in a bad state.

Let me know if you need more info.

Thanks!

JustinSteventon
Regular Contributor

Hi again,

Normally I create the Map object with "new Map(this)". If instead, I use "new Map(SpatialReference::webMercator(), this)", then everything seems to work properly. The only caveat is that I no longer receive a Map::loadStatusChanged event.

This issue is no longer blocking, although it still seems like something worth fixing.

Thanks!  

0 Kudos
bnoble0110
Esri Contributor

Okay thank you for that extra information @JustinSteventon , I have a feeling that will be a key piece. Just to be clear, this is what you're seeing?

* Poor network connection prevents the map from loading / displaying when using `new Map(this)`

* Poor network connection does not prevent the map from loading / displaying when using `new Map(SpatialReference::webMercator(), this)`

* When using `new Map(SpatialReference::webMercator(), this)`, you don't see the `loadStatusChanged` event. Is this also with poor network connection?

 

Glad it's no longer blocking, and would appreciate confirmation on the above if you can.

0 Kudos
JustinSteventon
Regular Contributor

Yes, that's correct.

The "loadStatusChanged event not firing" may not be a bug - since there is nothing being loaded. It is odd that I get it when using "new Map(this)" and manually adding a basemap though. It looks like it is emitted when there is a change to the map's spatial reference.

It could be that the map is trying to figure out what its spatial reference should be as part of initialization. The gray screen is a symptom of that process failing. For example, normally loading a web tiled layer initializes the spatial reference as a side-effect, but if that fails (due to network connectivity), then we end up in a bad state.

Thanks for looking into this.

-Justin

0 Kudos