0

I suspect that this is too specific to be solved with a question here, but I am hoping to get some analysis hints, at least:

I am using ESRI.ArcGIS.Client (for Silverlight), specifically ArcGISTiledMapServiceLayer, and a map at http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer.

There is a certain area (3 miles S.E. of McKittrick, CA on Reserve Rd) that goes gray at a certain zoom level (13). If I zoom in or out until the level changes to 12 or 14, the portion of the map is then painted OK. The gray rectangle (is this a tile?) is only a portion of the map that is otherwise OK at every level that I have looked at. I scrolled around a bit, too, and didn't see this anomaly at another location, although scrolling around is tedious at this zoom level and with as many graphics as I am handling.

My app has 21 layers and a total of almost 2600 graphics, which might have something to do with the problem. It happens in two different pages in my app (same map reference but different ESRI.Map object), but does not happen in a simple sample app with just a few layers and graphics, using the same Map.

I typically load the map once as the first Layer and keep it, but I have also forced it to reload; the problem remains. Finally, this is not random. It is repeatable every time.

Any clues?

Kelly Cline
  • 2,206
  • 2
  • 33
  • 57

1 Answers1

1

I'm not sure why you're getting a gray tile - that could be many reasons, but the tile data does seem to be there, so it's probably not a no-data tile you're seeing. However I must say that 21 layers is way way beyond the recommended number of layers in one map (it is extremely expensive to blend that many together client side), and I wouldn't be surprised if you hit some memory limits in the app or on the GPU. Add 2600 graphics on top which even by itself is getting close to pushing it, and it's not unlikely that this is the cause. The fact that you can't reproduce this with fewer layers is a good indication that this is what happens. However I haven't ever heard this issue reported before, but then again I haven't heard anyone putting that many layers together before and getting something useable out of it in the first place :-)

I would recommend you instead consolidate all your layers into one or a couple of services instead of having that many different layers client side. Use the server's capabilities which is built for rendering maps from the ground up, instead of overloading the client and it's network connection (XAML was built for building apps not maps from the ground up, so stuff like maps will often push the limits of what XAML can handle, not to mention you'll have A LOT of data to download across all those layers).

Btw. you're probably better off using the ArcGIS Forums. Those are patrolled daily by API developers and support staff - I just happened to stumble upon this question today by accident.

/Morten - Lead Dev. @ Silverlight ArcGIS API

dotMorten
  • 1,953
  • 1
  • 14
  • 10
  • I appreciate your comments; I am not at all expert in this area (for example, I'll have to learn what you mean by consolidating my layers into services), but I am a little bit surprised by what you say about the numbers of layers and graphics. In this same app, I have, at times, over 260 layers and over 35,000 graphics in one Map; it isn't very quick, as you can well imagine, but it does function and it is still only that one tile at that one level that doesn't show. I did search the ArcGIS forums, but I didn't leave my question there. Maybe I'll try that, next. – Kelly Cline Jan 24 '13 at 14:04
  • 260?!? Woah talk about information overload :-). So are you saying you have up to 260 entries or do you have only one that connects to one map service with 260 layers in it? (the latter would be consolidated) – dotMorten Jan 24 '13 at 15:10
  • No kidding! :) I don't have a map service over which I have any control. I am just consuming the freely-available one from arcgisonline that I mentioned above. The layers are all individual ESRI.ArcGIS.Client.GraphicsLayer entries (except for the TiledLayer), instantiated in the Silverlight app as needed and added to the Map. Layers, individually and in sets, have Visibility turned on and off as appropriate to provide a time-lapse view of items on the map, roughly similar to the Weather In Motion feature at Weather.com. (I expect we will soon get kicked off for carrying on a conversation!) – Kelly Cline Jan 24 '13 at 15:35
  • 1
    If you need to do time-based rendering, you should put them in the same GraphicsLayer and set the Graphic.TimeExtent property on each graphic that they are valid for, then set the Map.TimeExtent to automatically filter based on graphic, rather than creating a layer for each group of graphics. You can use the TimeSlider hooked up to the map to automatically do that. Check out the time samples in the SDK samples: http://esriurl.com/slsdk – dotMorten Jan 24 '13 at 20:14