Thursday, December 5, 2013

From concept to reality in 6 weeks - part 14

Whoever came up with the idea that 13 is an unlucky number? What does luck have to do with anything? I just don't believe in luck has to do with anything. I used to avoid even saying the word. All I know is that yesterday was the 13th day on this Windows 8 app and it was my most productive day so far!

Today is the big day when I switch from using Bing Maps to a different 3rd party mapping engine. I received new DLLs yesterday for the mapping engine but ran out of time to try it out in my app. I did try it out late last night to make sure the sample project I was given definitely works. This morning when I woke up early I found a newer version waiting for me, including a new vector map that is much better than the one we used in the iPad app. There is a lot more working today than yesterday and I was told that I would receive new builds each morning. The lead developer basically works all night long and I work all day long, so we have 24 hour coverage on this app.

I looked at the mapping engine example code and know exactly what I need to do. The one big exception is I must figure out how to add dynamic images which I create from a my icomoon custom font that contains the map marker symbols. I ran out of time yesterday to get that working on Bing Maps. The code I wrote will work in both cases, so that is where I will begin this morning.

But first now that I have two different maps, it is time to learn how to use C# interfaces. I want a single interface implemented in two different ways. I would also like to store some static properties in the interface that are constants I need in all implementations. To the documentation I go and I find a good explanation of how interfaces work in C#. I also find that C# supports properties in interfaces so that is all I need to begin. Turns out that you cannot have properties in an interface after all. Not exactly what I meant by static properties across all implementations so that is not going to work for me.

Now I am back on the task of figuring out how to create a dynamic image bitmap. The problem is that this is very easy in Windows desktop apps as I have done this before many years ago and I find articles explaining how to do create dynamic images but it does not work in Windows Store apps. I also cannot use the Bitmap class directly as it is not supported either. Bummer. Basically I cannot use anything in System.Windows.Media.Imaging as Windows Store app can only use Windows.UI.Xaml.Media.Imaging. The good news is that I learned that lesson already, so now all I need to do it figure out how to do what I want. In the correct package I see something promising called WriteableBitmap class. It appears that this is a very common question and the only solution I have found so far is to use DirectX, which just seems so wrong. I am giving up and creating images that I can then transform to whatever color I want as I just have not found any solution to my problem.

The big decision today was to go ahead and purchase the Hobbyist license of Telerik XAML Windows 8 controls since I can use that for the range slider without writing one from scratch.

I was able to get some of the data displaying on the mapping engine. I have been struggling all day trying to get images to display correctly on the map and now I am getting a very odd runtime exception that I do not know where it is coming from. That all will have to wait until tomorrow as it is time to go running for the 4th day in a row as I seriously need a break right now.

No comments: