Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Map.SetView() on Windows Phone 8

Is there a specific time in the page's lifecycle that the Map.SetView() function should be called? In our app we use this on various map objects and it seems to work randomly, sometimes perfectly and sometimes with no effect but also no exception.

example code:

RouteMap.SetView(LocationRectangle.CreateBoundingRectangle(DirectionCoordinates));

Where RouteMap is the mapping component and DirectionCoordinates contains the start/end coordinates for the map.

I can see that the bounding box is being created properly, but the map's positioning is not always being affected even loading the same data. If I add a break point it does seem to work, so I was assuming it had something to do with the map loading, but adding the SetView() functionality to the Loaded event has the same issue. We currently process the map information in the page Loaded event.

Update

I've been testing more and added events to what I could, I know for a fact that the MapLoaded event is being called before SetView. After SetView is called, it is working sometimes and not others. Neither ViewChanging or ViewChanged events are called.

like image 483
ellemayo Avatar asked Nov 27 '12 22:11

ellemayo


1 Answers

This is obviously not the best solution, but there must be something that is not quite finished loading when the Loaded event is called that is preventing this from finishing.

I added a 100ms sleep to the Map_Loaded event and it has solved the problem I was having.

System.Threading.Thread.Sleep(500);

update

100ms isn't working for some people, you may want to play around with the numbers, 200, 500 etc. It's still a very short delay on the map's load time. I have contacted Microsoft about this and they have told me that they are looking into the issue and we will hopefully have some sort of response from them shortly.

update and edit

Use the following code instead to prevent UI hanging:

await Task.Delay(250);
like image 81
ellemayo Avatar answered Oct 01 '22 02:10

ellemayo