I have a decent amount of mobile experience (5+ years) and decided to take a look at doing this a while ago - put simply, porting the code to Compact Framework simply is not going to happen without re-writing it with CF in mind.
sure you can re-engineer classes that dont exist on CF (background worker for example in the tile aquisition logic) but the preformance is going to suck.
if somebody ever wants to bend GM4DN to work on CF here are some real world things you need to think about.
any person contemplating doing this needs to realize that this is essensually an ocassionally connected application, so you need to have an 'offline tile store' (for when you cant go online). you may also need to consider bad connections (downloading a tile
over a bad wireless or cell connection).
you need to have a 'memory tile store' - ie keep some tiles in memory. the reason behind this one is because it can be an expensive operation to read tiles into memory from say a CF card or even worse a database on a cf card - each time the tile canvas moves
around (ie each time you need to draw the canvas).
you need to dream up a way to queue and aquire tiles (yes memory and offline tiles can be aquired on the same thread) but remote tiles need to be async. pesronally I would do this by having a async tile aquisition class that had a queue and accepted an interface
that preformed the operation (say using the providers http service or some other custom service provider, mabye web-service - hell theroritally you should be able to plug in any way to aquire a tile.)
if you want to make this more usefull on all platforms you need to think of a way to handle input in a way that makes sense for the platform that is on.
- on non-touch windows there is the mouse - this is easy,
- on multi-touch windows you need to handle the new input approprately
- on single-touch gesture-aware mobile (CF 6.5) you should take advantage of gestures (warning handling WM_GESTURE is going to be a challenge for whoever does it)
- on multi-touch gesture-aware mobile (CF 7.0) you should *theroritically* need to handle rotating the map (note CF 7.0 doesnt exist yet and I am only contemplating that it would have multi-touch - but if MS wants to compete in the device space it needs
to catch up with apple in this reguard).
now you need to dream up an interface that your *core* api is going to accept, and have specalized 'input managers' handle calling the core api in such a way that makes sence for the platform the manager is on.
a lot of the things you need to do have already been done in GM4DN - now it is a matter of re-engenerring it in such a way so that 99% of the code is completely shared, and that 100% of the code is pluggable so you can replace bits as you need to depending
on the platform you are on.
im not trying to put anybody off but it would be a decent chunk of work to make this usefull on CF but certanly not insermountable.
anyhow, congrats radioman on building a great library its requires a decent amount of time and effort to keep building momentium and momentium is something this project has.