Andrej Tozon's blog

In the Attic


Binding VirtualEarthMap Pushpin images

I've seen many questions regarding Atlas VirtualEarthMap control and assigning different images for different pushpins. The common solution is to use a single image for all pushpins on a map by specifying the map's [code language="C#"]pushpinImageURL[/code] property, but if you want pushpins to be represented by different images, you have to look a bit further. I took a closer look at this while playing with VirtualEarthMap, and the solution seems quite obvious: if you're retrieving your pushpin data from a web service, you probably defined a pushpin class, like:

[code language="C#"]public class Pushpin
   private int id;
   private double latitude;
   private double longitude;
   // other fields
   #region properties
      // ...

Now, let's say you're marking important building in your area and you have prepared some image files like police.gif, fire.gif, hospital.gif , hotel.gif,... You would want to define another field in that class to represent the your pushpin image file, e.g. [code language="C#"]pushpinImage[/code]. Then, in your virtualEarthMap declaration, replace the [code language="C#"]pushpinImageURL[/code] property with these two:

[code language="C#"]dataImageURLFormatString="images/{0}"

The {0} part will be replaced with whatever is in [code language="C#"]pushpinImage[/code] (image filename), and your emergency map is ready to use.

One thing I noticed using VirtualEarthMap - binding to more than 10 pushpins at once significantly slows down the loading process. I'm not sure why, but once they are loaded, there are no more hiccups.