Limiting Microsoft Virtual Earth Tile Downloads to the Client

There are a couple ways to improve performance in when using Microsoft Virtual Earth. One is to limit the number of tiles requested to the client from the control, but when do you want to do this?

If you're considering limiting the number of tiles downloaded to the client, the best way is to limit the number of rings of tiles being downloaded to the client by using the map.SetTileBuffer() method. When the map control is downloaded to your machine a set of tiles will be sent to the user to create the map interface. By default, the initial Virtual Earth map load will download only the tiles inside the view port of your DIV; however, once the user pans the SetTileBuffer method kicks in and depending on the number of rings you've set to be downloaded you could see some performance issues. If you don't really care about tile loading asynchronously as the user pans, you can limit the rings downloaded. If you'd rather see better performance for the user (for panning) you can enable additional rings.

I tried this with a 200 x 200 map. All results below had 4 tiles on the initial load, but 'X' kicked in after panning/zooming the map.

  • With zero rings (default) 4 tiles downloaded to the client.
  • 1 ring resulted in 16 tiles downloaded to the client.
  • 2 rings resulted in 36 tiles downloaded to the client.
  • 3 rings results in 64 tiles downloaded to the client.

At around 14kb per road map tile (23kb for aerial hybrid), that's a lot of data streaming down to your end user but if it makes sense to push a bunch of tiles down because you know the user is on a fast connection and they will be doing a lot of panning / mapping it makes sense. Use this method wisely.

CP