Windows Phone 7 – Bing Map Phone/Desktop diffs: MapLayer.SetPosition() missing on Phone

If you’re working on a Windows Phone 7 app that uses the Bing Map control, you might be interested in these little differences between the Desktop version and the Phone version of the map control.

1. The Location type on the Phone has no constructor that takes 2 parameters (the Desktop version does). You’ll have to construct a Location object with the default constructor and then set the Latitude and Longitude fields separately.

2. LocationRect also has no constructor that takes 2 parameters. Here you’ll need to do a little more work and assign the North, West, South and East fields appropriately after constructing a LocationRect object with the default constructor.

3. MapLayer has no static function called SetPosition that lets you map Location objects to something appropriate for a MapLayer. Use the regular instance member MapLayer.AddChild() instead.

With these changes, you can make the Desktop sample on the Bing developer site work on a Windows Phone 7 device.

7 Comments

  1. Mike

    How do you change the location of a UIElement that is a child of the MapLayer and that has already been added as a child at design time? We used to be able to use SetPosition on the desktop to do that. On WinPho, are you saying you have to remove and add each time?

  2. Mike

    Btw, i have tried using ‘ mapLayer.SetValue(MapLayer.PositionProperty, location);’, but a run time exception is thrown complaining about the values for location being invalid for property ‘Position’, regardless of what values i try.

  3. When I initially commented I clicked the “Notify me when new comments are added”
    checkbox and now each time a comment is added I get three emails with the same comment.
    Is there any way you can remove me from that service?
    Thank you!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.