MapQuest Developer Blog

Archives for Antony Pegg

  • MapQuest Opens Up - in the UK

    As I write, we are in the final few days of work left to us on the new Beta site open.mapquest.co.uk.  It's an experimental site that uses the free open source OpenStreetMap data, as well as various open source tools, software and utilities to bring it all together.  We then added some of our own special sauce - our best-in-class routing algorithms, and our new user interface (a full experience of which can be found at new.mapquest.com). If you are unfamiliar with OpenStreetMap, it is mapping data gathered by volunteers, for free - over a quarter million of us by now! - across the entire world with the express purpose of this data being available to anyone for (almost) any use, and not locked in high-priced commercial vaults.  There is a great benefit to this - If you find something wrong or missing, you can go fix it or add it! if you go to openstreetmap.org, find the place on the map, and click the edit tab at the top, you can fix the roads, add the businesses, and edit the map.  There is also an OSM (OpenStreetMap) Wiki that tells you more about the OpenStreetMap foundation, the data, and how to get involved. It is truly amazing what they have accomplished. Randy Meech, our Head of Engineering, summed up why we are doing this project more succinctly than I ever could - so here's what he said: "We believe that open source is ultimately the future for AOL's local and mapping applications. And we're very excited about supporting OpenStreetMap, which powers the maps behind Patch, our local news and information platform. We believe community generated maps that are of high quality and accuracy will end up ultimately being the better mapping product for users. Allowing users to improve the areas they know and care about like streets in their neighborhood, in addition to hiking trails, parks and bike paths, we believe will lead to the best mapping experience for all users.” To prove we are serious, we announced today at the SotM conference with a $1 million fund to support the growth of open-source mapping in the United States.  This first website is also proof that this is not lip-service.  We are engaged, and actively working on integrating, using, and improving these tools and we wanted to be able to demonstrate that at the conference. The goal was to create a MapQuest experience for the United Kingdom using only OpenStreetMap data.  As much as possible we tried to use the open source software used by the OSM community, so anything we did to these tools could be contributed back.  We picked the UK first because we felt we had the best shot of getting use-able routes from the data without having to worry about a language barrier at the same time. We started out, as anyone else would, with the latest dump of the OSM Planet data. We grabbed OSM2PGSQL, a python script used for data conversion, and set ourselves up with PostgreSQL with postGIS extensions (a library that adds a lot of geographical functions and datatypes to PostgreSQL). After successful import, we needed to render and cache the tiles.  For rendering we use Mapnik and for caching, TileCache.  We turned to our good friends at Cartifact to help us re-create our MapQuest style as Mapnik style files.  At this point, we discovered there were some features that Mapnik didnt have that we could really use.  Fortunately, we were able to hire Artem Pavlenko, the very awesome chappie who created Mapnik, to improve it with the features we needed, and then release it back to the community. They included such things as SVG Symbolizer, label offsets, improved connection management, and multistyle rendering based on polygonal regions. The last one we needed because we have 3 different styles (US, Europe, Rest of World) we needed to apply. [caption id="attachment_281" align="aligncenter" width="443" caption="OSM Style of Oxford."]OSM Style of Oxford[/caption] [caption id="attachment_279" align="aligncenter" width="443" caption="MQ style of Oxford."]MQ style of Oxford[/caption] For directions and routing, we started with the raw OSM data and converted it into our own format that works with our routing engine.  Along the way, we found much duplicate data and other little issues that sometimes caused problems.  For example, we were initially unable to make directions to York in England, because the city center is surrounded by pedestrian walkways.  For a while, we could only get the Channel Tunnel going one-way, and no-one could get into, or leave France.  However, once we overcame the issue, we were remarkably impressed by how well it all worked. [caption id="attachment_277" align="aligncenter" width="620" caption="From Scotland to Istanbul, stopping in Girona along the way."]Directions from Scotland to Istanbul[/caption] Geocoding & Search turned out to be our biggest challenge when using OSM data, and is probably the area we will focus on the most in the next phase.  Normally we make a distinction between Ambiguities (Did you mean Brentwood, England or Brentwood, Alabama?) and Searches (Pubs in Brentwood) and we provide a different UI flow for search results than we do for ambiguities. The Open Source finders have only a single set of results to any query, with no distinction.  Most of the Ways (what OSM calls lines, or streets) and Nodes (OSM-speak for Points) do not have house numbers or addresses on them, which makes geocoding to a numbered street address very unlikely. Most of the businesses do not have the info that a commercial data set brings - phone numbers, hours of operation, etc.  So be prepared! The search results are not yet what you would expect from a full blown MapQuest site - but we'll get there...oh yes, we will.  To that end, we also tracked down Twain, the excellent creator of Nominatim, the search engine that OSM uses, and have shanghai'd him to make improvements he's wanted to do for a while, and contribute back, as well. This droning monologue has gone on far too long already! For anyone who has stuck with me through this post, and who happens to be at the SotM conference, feel free to accost me with advice, suggestions and frosty beverages. This project has been a very valuable lesson in all the little things that go into MapQuest that as both an employee and a user, I take for granted.  The most amazing thing to me is the incredible effort that has been put into OpenStreetMap and its tools by such a large number of dedicated volunteers - a movement that will continue to grow. I look forward to providing more details as we continue to work on this exciting new path for MapQuest after the conference and am very excited to be participating in the OSM community. Note: For a more concise post, I suggest you check the blog post of my co-conspirator, Deb Tankersley, over on our consumer blog.
  • MapQuest Officially Announces Launch of Platform V6 At SXSW

    It must be official, we have a Press Release! It has a very catchy title: MapQuest Engages Developer Community with Presence at SXSW; Shows Easy-to-Use, Developer Friendly Tools.

    Over the last eight months we have overhauled the MapQuest Platform from top to bottom. We have re-written every key component, and exposed our core functionality through sane, modern, easy-to-use Web Services. We are now finishing up overhauling our main SDKs for AS3 / Flex and Javascript to use these new services as their foundation.

    As a reward, MapQuest is now sending us to SXSW Interactive to show it all off. We are also hosting a BBQ Party at the Salt Lick. I, for one, intend to celebrate the launch of something that has been a definite labour of love. I truly love what I do, am passionate about MapQuest, and work with some of the most truly awesome people around - which makes me very grateful to have been afforded the oppportunity to bring this new vision of what the MapQuest Developer Services should be, to fruition. It has been a great journey so far, and as I look back over what we have accomplished in such a short time, I am proud of the hard work we have done, and look forward to what we do next.

    Ok, enough of that. If you truly want to see our enthusiasm for what we have built, stop by our booth (#401) at SXSW and we'll talk your ear off, offer you some beer at the Block Party, and even help you with some implementation at our little Genius Bar we've set up. My compadre-in-chaose, Josh Babetski, is also hosting a panel you might find interesting.

    Until then, here's a quick(ish) summary of links to previous posts about the different parts of the platform as we released them to production:

    MapQuest Directions Web Service And Long URL Web Service Released - October 12th.

    Web 2.0 Geocoding Service Launched - November 12th.

    Static Map Service Launched - December 4th.

    Address Point geocoding, New Map Styles, & Free Edition Geocode Data Upgrade - January 20th.

    Search Service And Static Map Wizard Launched - February 25th.

    MapQuest Traffic Service Goes Live - March 4th.

    MapQuest AS3 / Flex SDK V6.0 Launched - March 9th.

    I am pretty sure that, not even counting the beta rollouts, we have managed an average of more than one new product or release per month, over the last 6 months. I am just absolutely blown away by how much work we've done in such a short period of time.

    Alright. Enough from me. Texas, here we come!

  • MapQuest AS3 / Flex SDK V6.0 Launched

    I am extremely happy to announce that we have launched the version 6.0 of the MapQuest Actionscript / Flex SDK for mapping, geocoding, directions, geo search, and traffic! Before I go any further, here are the important links: You can download the AS3 / Flex SDK here. You can view the Samples here. You can view the documentation here. You can access the AS3 / Flex section of the Developer Network here. And if you don't have one already, you can get an appKey here. During the course of the project we have touched pretty much every line of code to overhaul, upgrade, enhance, optimize and improve the SDK. We also re-wrote several main sections of the SDK from the ground up to use the new MapQuest Web Services. What follows is by no means a complete list of the things we have done to the SDK, but should give a nice overview of the main enhancements.
    FlashBuilder 4 (beta) Support
    The SDK works with both FlexBuilder 3 and FlashBuilder 4. The SDK also works with both Flash Player 9 and Flash Player 10.
    Single .swc, Smaller Compiled App
    We've consolidated all the different files into one single .swc. We also removed dependencies from the core TileMap object wherever possible, typically resulting in a smaller final SWF size .
    Object model Overhaul, Removed Getter/Setters
    Most explicit object.setProperty(value) functions have been removed from the SDK, in favor of a more AS3-friendly object.property = value. Returning these values has also been changed to object.property. Not only does this make the SDk more intuitive, it also removed quite a lot of weight!
    Shapes And Drawing Engine Overhaul
    The core shape objects have been overhauled to be simpler, and use a new internal drawing engine. As a result we have been able to add a couple of other new cool features. One example is that you can now add child overlays to a main overlay, which then act as clipping masks to punch holes in your polygons, rectangles, ellipses, and circles. So now you can do donut polygons! Yay!
    Overlay Cutouts You can use any shape overlay to cut holes.
    Directions, Search, and Geocoding completely re-written
    This is a complete overhaul and upgrade to the object model and how you use it - it is now MUCH MUCH simpler and saner - and smaller! Create the appropriate service object, pass in your parameters, provide your map object, and watch the results appear on the map automagically. Provide an event handler to receive the results. Done!. If you are a power-user type, you can dive under the covers to provide all the different options available from the underlying services.
    Draggable Routes!
    If you want your users to be able to drag the route, then just add dir.ribbonIsDraggable = true; on the directions object before asking for the route. At the end of each drag, your directions success event handler is called again so you can handle the updated narrative. That's it. Done!
    New Map Style with a Draggable Route added and in mid-drag New Map Style with a Draggable Route added and in mid-drag.
    New Controls
    There's a new carousel control that looks like the MapQuest.com Biz Locator control. this tool lets you easily add ShapeCollections to the map, with a pre-built UI for users to turn these collections off and on, on top of the map. There's also an overview map control you can place in the corner of the main map, as well as other controls to enable mouse scroll wheel zooming, and keyboard map interaction.
    DefaultTileMap Component
    The new DefaultTileMap object and drag and drop component sets up the map UI to work just like MapQuest.com, making it even quicker to set up all the controls and mouse interactions.
    New Declutter Modes
    Decluttering was also overhauled, providing new ways to declutter the map. My personal favourite is the new ForceDeclutter which animates the POIs moving away from each other until they are decluttered. It makes me giggle every time.
    The new map style with Globe View turned on in the AS3 map toolkit The new map style with Globe View turned on in the AS3 SDK.
    There are so many things we have done to the SDK, I am sure I've missed a few big items. I could mention the Globe View changes (you can now set the globe size, and freeze either axis, or make it auto-rotate to be vertical again when someone stops spinning it); I could also mention the spiffy new documentation that includes sections on how to make your own infowindows, POIs, and custom controls; But, unfortunately, I am out of time for now, as I must go prepare for SXSW later this week. If you are going to the conference, please do stop by the booth (#401) and say "Hi" to us, check out the new Platform and, if there is room left, come to our BBQ party!
  • MapQuest Traffic Service Goes Live!

    Another week, and another production launch to the MapQuest Web Services. This time around it is the new Traffic Service.

    Since I have already blogged about its features and functions when we pushed it to beta, I'll just provide a brief summary and encourage you, dear reader, to click through to my original post.

    Get Markets List
    Determine the markets where we have traffic coverage with a simple call. There are no parameters (except your appkey). It simply returns a list of market names, their center-points, an icon to use, and suggested bounding boxes for zooming in. This function is handy for showing the traffic markets on zoomed-out maps, and creating the "zoom to market" links in the market infoWindows.
    Get Incidents in an Area
    Request all incidents within a given bounding box and filter based on which incident types you want returned ("Construction" for example). Each incident provides type and location details, an appropriate icon to use, a short and full description, and timing/duration info.
    Get Traffic Flow Overlay
    Retrieve a transparent raster image of color-coded traffic flow that overlays on top of the road network, providing colour-coded visualization of current traffic speed conditions

    Incidents in a market
    Showing both incidents and flow on a map.

    The service is all part of the new platform services, so it allows you to GET with Key-value pairs, GET or POST with JSON or XML, and receive your response in a different format to your request (eg: send in XML, get it returned as JSON).

    The Developer Network also contains more information about the MapQuest Traffic Service or take advantage of our Traffic Service Forum.

    If you haven't tried any of our new services and SDKs yet, you can sign up for a free appKey here.

    Stay tuned...more to follow soon.

  • Search Service and Static Map Wizard Launched

    So we finished up a new Production push to the MapQuest Web Services early this morning. I've blogged about most of the items included in the update as they've gone to beta, so hopefully I can make this a quick post and go home to get some sleep. Pre-dawn production roll-outs can be very draining - after a while coffee no longer has an effect, the early morning donuts are all gone, the cold grey light of dawn gives way to a harsh glaring sun, and any attempt to look at a computer monitor induces tunnel vision. Anyway, enough of the pain, and on to the pleasure!
    Static Map Wizard
    We've added a new interactive application to the Static Map Service that will build your static map image URL for you. You can add multiple locations and a route to a draggable map, turn on traffic, and use pan & zoom controls to set up your initial map view. Clicking on a POI lets you pick a different icon to use, or drag the POI around to reposition it. Then you can choose the size of the image, and the image file format you want, as well as a few other options, such as turning on declutter, or best-fitting the map around the POIs you've placed on it. As you change the interactive map, we keep the preview static map image updated, and provide a nice, easy copy 'n' paste URL for the image you have set up.
    Static Map Wizard Using the Static Map Wizard, you can use an interactive map to define your places and map view, and we'll generate the static map image URL for you.
    Search Service
    Fortunately I've already written three posts on this one, so I can point you to those posts and savour my last donut while you read my previous pearls of wisdom. Well, maybe I should give a recap in honour of the production launch. Let's see if I can type a summary while holding my breath. You can do radius, rectangle, polygon, and corridor searches, as well as searching by driving or walking time or distance. You can tell us your search parameters using (variously) lat/lng pairs, IP Addresses, street addresses, or OGC Simple Features. You can search against MapQuest-provided data sets, against your own uploaded data sets, against data you pass down the wire as part of the search request, against the actual map vector data, or against any combination of all of the above. You can filter on fields in the data to narrow down your results, ask for full data on individual records, get results back in JSON, XML, or KML, as well as break the results down into multiple pages to avoid receiving all the results at once.
    More details on the service can be found in Search Service Part 1 - How to Search, Search Service Part 2 - What can I search? and Search Service Part 3 - Other cool twiddly bits.
    The Developer Network also contains more information and links to the Search Service Forum.
    If you haven't tried any of our new services and SDKs yet, you can sign up for an appKey here. Stay tuned...more to follow soon.