12 Answers, 1 is accepted

Mostly, the performance of the dynamic layer depends on its ZoomGridList you use in your application. The optimal value for the Latitudes and Longitudes count depends on the viewport size of the map control and the min zoom level of the zoom grid.
I think that the dynamic layer will have best performance when the square size for request will be approximately equal to the viewport size (of course if you want to reduce a number of requests to the service, then you can use more large square size).
The count could be calculated using the following way:
1. For example the viewport size is 1024x1024.
2. The map size is 512x512 when the zoom level is 1, 1024x1024 for 2 and 2048x2048 for 3 etc. The map size is calculated as 2 ^ (zoom level + 8).
3. When the zoom level is 3, then the count could be calculated as 2048 / 1024 = 2. I.e. count is calculated as map size/ viewport size.
The dynamic layer adds/removes items dynamically. It works with squares which are calculated according to its ZoomGridList. When a square appears within the visible area of map then the dynamic layer adds its items onto the view. When a square gets out from visible area then the dynamic layer removes its items. During the panning a few squares can change its visibility. When squares contain a lot of points (1000 or more) then this process takes a long time.
I have attached a sample solution. It calculates the ZoomGridList values automatically according to the approach above. The example generates collection of 100000 random locations which is used in the ItemsRequest implementation to retrieve locations within the requested square.
I hope it helps.
Greetings,
Andrey Murzov
the Telerik team

The issue of the locations passes to the ItemsRequest method is still there. Do I need to do something once the Map has finished loading before this call is made? Not sure how this could be as it is all automatic.
I am not sure I understood your question completely.
The ZoomGridList property is set in the InitializeDynamicSource method in the project I attached. The ItemsRequest method is called after the DynamicSource property is assigned.
I think you can use the InitializeDynamicSource method as a base for initializing the ZoomGridList in your application.
Regards,
Andrey Murzov
the Telerik team

It is interesting idea to prevent the items request while the panning is not finished.
I think you can use the CenterChanging and PanningFinished events. You could prevent performing request after the CenterChanging event occurs. And you can allow it when the panning is finished. Also you should call the Refresh method of the dynamic layer after the panning is finished.
I have attached the sample solution.
I hope it helps.
We have created the pits issue for the feature for dynamic layer with the behavior like above.
You can track implementation of this feature using the following link:
http://www.telerik.com/support/pits.aspx#/public/silverlight/5652
Best wishes,
Andrey Murzov
the Telerik team

Thank you for the feedback with additional details.
In fact currently the DyamicLayer does not correspond to new features of the map control. For example it does not allow to use properly the RadMap.GeoBounds property.
We have created the pits issue for redesigning of the DyamicLayer for more usability and performance. You can track implementation of it using the following link:
http://www.telerik.com/support/pits.aspx#/public/silverlight/5817
Regards,
Andrey Murzov
the Telerik team

What I have noticed is that, when the density of items on the Information or Dynamic layer gets too high, panning and zooming become slow and jittery. This seems to occur when the number of viewable items exceeds about 300. The reason, I believe, is that the position of each item is re-calculated based on the latitude and longitude as the map is panned.
In our current system, we calculate the position of each item one time until the zoom level is changed. It would seem to me that this could be accomplished here as well. If a layer was defined as a canvas so that absolute points could be used and the items placed on it, the canvas could be moved in sync with the map and the individual items would not have to be moved. Additional items could be added as the panning exposed more of the canvas.
What do you think?
The number of the items depends on the complexity of the item template. For very simple templates like Rectangle number of the items can be 2000-3000. More complex templates require more PC resources for rendering, so the number of items decreased.
The information layer doesn't calculate the position of every item when panning. It does it only when zooming. In short it works similar to your description already.
Kind regards,
Andrey Murzov
the Telerik team

The Ellipse is a bit slower compared to Rectangle, but the difference is so small, so it can be considered as negligible. To be sure that we are talking about the same thing, I've tested productivity of the information layer using following data template:
<
DataTemplate
x:Key
=
"EllipseTemplate"
>
<
Ellipse
Width
=
"10"
Height
=
"10"
Fill
=
"Green"
telerik:MapLayer.Location
=
"{Binding}"
telerik:MapLayer.HotSpot
=
"0.5,0.5"
/>
</
DataTemplate
>
With this data template information layer was able to handle 3000 items with not bad performance.
Greetings,
Andrey Murzov
the Telerik team