About a month ago I was doing some R&D for a project we were contemplating taking on. Our portion of the project was to design the front end of a kiosk application for a large national retail company. They wanted to do a pilot of a couple of dozen kiosks in several of their stores. Their requirements were very well defined and most of the back end made use of their existing business systems using a COM layer that they were in the process of developing. Since the kiosks would be located in the stores, they would be connected to the internal network and actually function as just another workstation, albeit a “dumbed down“ one. One of our original thoughts was to build the front end as a web application that would run on each kiosk.
One of the requirements of the system was to display other nearby store locations along with directions and a map for each. Because we were uncertain at the time whether the kiosks would have internet connectivity I originally looked into using a desktop-based mapping software package rather than a web service-based one. For the end result I wanted something very similar to MapQuest or Yahoo Maps - something users would be familiar with. I basically just wanted to pass in the address and receive a road map with directions on it from the current location to the address. The two products that I originally focused on were Microsoft MapPoint 2004 and MapInfo's MapXtreme 2004. Following are my thoughts on each.
I was initially shocked that I had to use COM interop to use Microsoft MapPoint 2004 in an ASP.NET application. How could a Microsoft product labeled the “2004“ version not have any .NET hooks? After spending a couple of days pouring over documentation, FAQs, and forums, excessively tweaking file, registry, and DCOM permissions, implementing examples, and doing some “Marco Polo“ discovery I was fairly disappointed with the product (actually, I really liked the product as a desktop application - it is perfect for that!). I didn't find many good examples that I could follow. They do have an ActiveX control that can be used in the page, but all I needed for the kiosk was a way to pass in an address and display a map - no scrolling, no zoom, no setting way points, etc. I found that simply rendering a map and displaying it in a page is not supported through a web interface. The product is licensed per computer and apparently they don't want people to use the product to generate web pages that can be viewed remotely on a PC that isn't licensed for the product. I can understand that, but in my case the user would actually be viewing through the browser on that machine that would be licensed for the product. After probing some more I realized that I could write a wrapper that handled the functionality that I needed, but I was looking for something a little easier. I may return to this route later.
The second product I tried was MapInfo's MapXtreme 2004. I was pleasantly surprised at the number of really good examples and “quick starts” and unlike MapPoint, it had .NET libraries for use. I played around with it for a few hours and I liked how it worked pragmatically, but I wasn't as pleased with the resulting images, etc. My conclusion probably comes from my novice experience with the product and the lack of time I spent with it, though. The demo version that I used only had street maps for a city or two in Great Britain, nothing for the US - so it was kind of difficult for me to compare to something I was familiar. For me, the product seemed more like a product to generate maps, not really the “Streets & Trips” I needed. It seems to be a great product though, and with some more time spent working with it I could probably get more out of it.
Disappointed in my brief quest for a desktop application to serve my needs I took a look at Microsoft MapPoint Web Service. I loved it. My findings were just the opposite from its desktop sibling - it is of course .NET based, it was easy to use, and there were tons of examples. After getting the account setup, it took me about an hour to set up a prototype of what I was trying to do. Actually, the toughest part was getting the account setup - I had lost my initial password that I created (spelled it wrong when I wrote it down) and I had to email an administrator to get it sent to me. After that it was a piece of cake.
I poked around to find examples for a couple other web services, like MapQuest and Yahoo Maps, but couldn't easily find anything. I found nothing on Yahoo Maps that mentioned it and the references I did find on MapQuest were to contact a sales rep for more information. I hate that!! Just give me a link to fill out a form to get a demo account and a link to examples - I'll contact a sales rep when I am ready to purchase, but not before.
End result: hopefully the kiosks will have internet access. If so, I'll be pushing for MapPoint Web Service. The pricing structure might be a hindrance, but that is up to the client to decide. Implementation would be simple, so they'd be saving cost in development hours. If there will be no internet access, then I will probably take another look at MapPoint 2004 and either consider creating a wrapper to perform the functionality I need or we can manually generate a map for each location and have those stored on the system for use. Additionally, if I run into another project where we need maps/driving directions, I will definitely recommend MapPoint Web Service. You can call me a fanboy if you'd like, but “I y'am what I y'am.”