MapQuest Developer Blog

  • Flash Maps API on Your Mobile Device!

    If you're reading this, you've likely been following our Flash Maps API and Open Flash Maps API. Well today, we're here to announce the initial beta release of our newest Flash product, the Mobile Flash Maps API!! [caption id="attachment_1496" align="alignright" width="240" caption="Pinch zooming, larger icons and larger close buttons are just a few ways in which the Mobile Flash Maps API has been optimized for mobile devices."]Mobile Flash Maps API Screenshot[/caption] Thanks to Adobe's release of the Flex and Flash Builder 4.5.1 SDK, we're able to provide the same cross-platform mobile capabilities in our Mobile Flash Maps API. As a result, the API is able to support development of iOS, Android and Blackberry Tablet applications using the same code base.  That's right, code once, deploy everywhere! This release of the Mobile Flash Maps API contains the vast majority of the functionality found in our Flash Maps API and has also been optimized for mobile application development. Key features are listed below.
    • Pinch-to-Zoom: Multi-touch gestures now supported for zooming
    • Larger POI Icons: Default POI icons have been increased in size to aid in touch gestures on mobile devices
    • Larger Close Buttons: InfoWindow close buttons have also been enlarged to allow for easier touching
    • Mapping: Use a drag and drop Tilemap Component for the Flash Builder IDE, or a pure ActionScript TileMap object
    • Geocoding: Basic geocoding, batch geocoding and reverse geocoding
    • Routing: Textual driving directions, route ribbons for map display, and route shapes for drawing your own route ribbons
    • Searching: Radius, polygon, rectangle searching, etc
    • Traffic: View current traffic conditions, including traffic incidents and ongoing construction
    To start developing your own mobile application using the Mobile Flash Maps API, please visit MapQuest Beta APIs and SDKs where you can download the API and the source code to a sample application. And remember, this is still beta and we'd love it if you can provide some feedback at flashapibeta@mapquest.com, on the Mobile Flash Maps API Beta Forums or @MapQuestTech if you can squeeze it within 140 characters!
  • MapQuest JavaScript API version 7 released!

    This week is exciting, we should have several things to announce. First up, version 7 of our JavaScript Mapping API has been released. This release features expanded mobile support, updated map controls, better documentation and for you geonerds out there, a special treat - MapQuest now is on the Mercator projection. Mobile Support We support iOS and Android with version 7, and we expect this list to expand over the coming months. Additionally, we've expanded our event handling on mobile devices to enable interaction such as touchable POIs. Mobile mapping is a major focus going forward, so this is just the beginning. Updated Map Controls Including Geolocation Yes, the beautiful map controls featured on MapQuest.com are now available through our API. Plus, you get a bonus control that we have not exposed on MapQuest.com. The waving man! Click him and he automatically centers the map based on the W3C Geolocation Specification implemented in many of the latest browsers. Additionally, you can add a custom handler to perform some task after you've been geolocated: find the closest store, reverse geocode, etc. Here's a sample using geolocation with a reverse geocode. Better Documentation Is there anything more frustrating that trying to develop something with incomplete or incorrect documentation? We feel your pain. Our goal is to make working with the MapQuest Platform easy, so we've added "try it now" features to all of our docs, allowing you to edit the code in the browser and see the result. Plus, we're expanding our samples and pages, including the new Customize the Map Interface page for all those folks who like to put their own look on the map controls or info bubbles. Nerd Alert Changing our projection to Mercator might not seem like a big deal, but to those who might have struggled overlaying data, it will greatly simplify using our maps with other systems. On the API side, we're continually streamlining to simplify development. You'll notice a new map constructor object with an easy way to initialize the map based on specific points - just pass the collection object to the constructor. For all you version 6 users, upgrading to version 7 is as easy as changing the version string in your JS include URL! This is just the beginning...please stay tuned for further updates by following the blog or our Twitter feed (@MapQuestTech). Follow me at @MapQuestRoman. Next up...a way to code once and deploy mobile apps with stunning maps to iOS, Android and Blackberry! Impossible you say?
  • Open Flash Maps API with OpenStreetMap Support!

    Today we're here to announce the latest improvement to our Flash Maps API - support of the MapQuest Open Initiatives!! Dubbed the Open Flash Maps API, this API is very similar to the standard Flash Maps API except it relies solely on open data. It includes support of OpenStreetMap, Open Aerial Tiles, Open Directions Service, Nominatim Search Service, and other Open Services. Both versions of the API obviously have their advantages but if you love the concept of 'open data' and the ability to edit and improve data quality yourself, the Open Flash Maps API is definitely for you! Now that we've hopefully piqued your interest, here are some links to help you get started. [caption id="attachment_1431" align="aligncenter" width="500" caption="Route example found in the Samples Explorer Application."][/caption] The source code for each sample can also be easily viewed within the application.. so what are you waiting for? Copy it, play with it, create an application, and share it on our forums or @MapQuestTech!
  • Geocoding is exciting

    Geocoding is a very utilitarian tool and also one of the most popular capabilities in the MapQuest Platform. Did you know geocoding can also be witty, fun and exciting? Here's how: Oh So Witty: It assigns a latitude and longitude coordinate to a street address, zip code, intersection, or geographic boundary. Exciting: Because without geocoding, you can’t show a map, driving directions or start a proximity search!  If I was desperate for a Sonic burger I wouldn’t’ be able to find a Sonic without using a geocode. Good ol' fashion fun: Geocoding also allows businesses to do analytics such as understand where their customers are and where their customers are coming from. And just when you couldn't get enough of geocoding, here's what makes MapQuest geocoding unique: -       The ability to return a 5-character result code to verify the accuracy of locations in greater detail than a simple yes/no or percentage match. -       Support for geocoding up to 100 locations at once in a single batch function call. -       Address point geocoding – this means we return a geocode that represents the middle of the land parcel and one where the address connects to the road network. -       Thumbnail ambiguity maps – if the MapQuest service finds multiple options for the geocode you can return a thumbnail image of the ambiguous location to give end-users some context when disambiguating. -    Reverse geocoding - take a latitude and longitude and find what address it is -       And more. . . . All of this can be easily accessed through our Geocoding API, which you will also access when using our JavaScript API or our Flash Maps API. MapQuest Community Edition allows up to 5,000 geocodes per day. The licensed solution, as part of the Enterprise Edition, has unlimited access.  We license geocodes to be used in conjunction with maps and directions as well as provide geocoding only licenses. If you're looking for more geocodes but aren't interested in an Enterprise license, do not fear.  Our Nominatim search API built on top of Open Street Map data can also geocode and reverse geocode.  No key is required and MapQuest sets no transactional limits!  Plus, since its on top of crowdsourced Open Street Map data, you can fix any data problems you might find.
    If you have questions about geocoding, just give us a call 888-627-7837 at or email info@mapquest.com .
    Now get geocoding!
  • Click the Map for Weather

    It's summer time and no matter where you are, that can mean some pretty interesting weather! Let's explore what we can do to mash-up weather forecasts with MapQuest maps. Step One:  Find a simple weather web service. I like to use the GeoNames web service for two reasons: it's free and in json. Further documentation for the GeoNames weather web service can be found here http://www.geonames.org/export/JSON-webservices.html. Click map for weather Step Two:  Get a map from the map constructor (http://www.mapquestapi.com/sdk/js/v6.0.0/basic-map.html#basicmap). and create a location. To do this, add a click event listener to the map (http://www.mapquestapi.com/sdk/js/v6.0.0/basic-map.html#events). Step Three:  Now grab the lat/lng from the map click event and use it in the GeoNames service request.  You can use your own username! Once you have the weather json response, you can grab the current conditions. I created a simple POI (point of interest) with the station name in the title, and the clouds and temperature in the content window. After adding the POI to the map, the info window is toggled on since it's the only POI on the map. Congratulations: You now have weather on click anywhere in the US! That's all there is to it! You can see it working here http://www.mqdemo.com/brian/clickEvent.html.
  • Get Creative with the Open Static Maps API

    As many of you are aware, MapQuest has had a Static Maps API Service using licensed data for quite some time now. So, it's only fair that we now provide the same service using open data for the open community! What does the API do then? The Open Static Map Service enables the user to create beautiful static map images generated via an HTTP request for their website or publication. The simplest example requires only a few key parameters:
    • key - your MapQuest AppKey
    • center - center of map in latitude/longitude
    • size - size of map in pixels
    • zoom - zoom level of map
    For example, http://open.mapquestapi.com/staticmap/v4/getmap?key=Kmjtd%7Cluu7n162n1%2C22%3Do5-h61wh&size=600,200&zoom=15&center=41.862648,-87.615549 will result in the following image: But what if you need to plot POI locations? On satellite imagery? Easy. http://open.mapquestapi.com/staticmap/v4/getmap?key=48RTFOpswl9ML0bHgxx0bcIl0piyoFr3&size=600,200&zoom=3¢er=35.60395,-98.906248&type=sat&pois=yellow_1,33.748867,-84.388185,0,0|yellow_1,29.763066,-95.363351,0,0 How about a route? No problem. http://open.mapquestapi.com/staticmap/v4/getmap?key=48RTFOpswl9ML0bHgxx0bcIl0piyoFr3&size=600,200&zoom=14&shapeformat=cmp¢er=40.770021,-73.984003&shape=y_zwFjsrbMxWkz@??}DoC??a@}CyBt@ySiN??fDeP&scenter=40.77069,-73.992378&ecenter=40.770935,-73.97644 Multiple features, plus an automatic 'declutter' option? You got it! http://open.mapquestapi.com/staticmap/v4/getmap?key=48RTFOpswl9ML0bHgxx0bcIl0piyoFr3&declutter=true&size=600,200¢er=40.720212,-74.066627&zoom=5&pois=yellow_1,40.037661,-76.305977,0,0|orange_1,41.761715,-72.686376,0,0|orange_1,41.394906,-73.454489,0,0|orange_1,41.380665,-73.420447,0,0 Now that you've seen a few examples, don't be shy! Get creative by dynamically producing static maps for your website, adding your own custom icons, and more! Visit the Open Static Map Developer's Guide to learn about additional request parameters and options available. Or if you're just a beginner, perhaps you'll want to head straight to the Open Static Map Wizard. As always, find us on Twitter @MapQuestTech or the Developer Network to provide feedback!
  • Transit Routes Now Available for the (Open) Directions API

    New data, new services, this is just how we roll! With the latest addition of transit data, developers can now incorporate transit routing into their own mapping application. Using this service is really no different than directly calling for our driving, walking, or biking directions. Simply changing the routeType to 'multimodal' will prompt MapQuest to begin searching for an optimal route combining pedestrian routes with transit routes. Because transit data is also time-sensitive, some key parameters outlined on Date/Time Routing Options have been added and are required for the service to return a response. Seen below is an example of a transit route request using the Metro from the oft forgotten about and climbable (!!) Albert Einstein Memorial to the Verizon Center in Washington, DC. http://open.mapquestapi.com/directions/v1/route?key=YOUR-KEY-HERE&routeType=multimodal&timeType=1&outFormat=xml&from=38.892551,-77.048244&to=38.898137,-77.020928 As documented on the Date/Time Routing Options page, when the value of timeType is set to 1, the current time is sent to generate a transit route. Other options include choosing a certain day of the week and time, or selecting a specific date and time -- all of which can have a major impact on the transit route returned. Don't forget to also check out the updated Advanced Routing Sample and give our API a test-drive! [caption id="attachment_1276" align="aligncenter" width="600" caption="Partial screenshot of the Advanced Routing Sample using the Open Directions API"][/caption] Currently, transit directions are available for six major metropolitan areas: New York, Chicago, Washington, D.C., Boston, Philadelphia and San Francisco in both our Directions API and the Open Directions API. Please feel free to provide feedback on our forums or @MapQuestTech while we look to increase the amount of transit data available and improve the service itself. Happy Transit Commuting!
  • Interoperable Location Data

    SXSW Interactive has traditionally served not just to launch new products, but also as a collaborative brain trust where the dialogue on stage continues into Austin’s streets. Along with some esteemed industry friends, I had the pleasure of participating on a SXSW panel last month covering the topic: "Interoperable Location Data: Matching Your Places with My Places."
    Tyler Bell
    Director of Product: Factual
    Kate Chapman
    Developer Advocate: GeoIQ
    Adam DuVander
    Executive Editor: ProgrammableWeb
    Scott Raymond
    Co-founder and CTO: Gowalla

    The Issue

    There's an ever-increasing amount of applications using location data. Some are licensing data, some are using open-source data, and some are building datasets from user-generated records. Unfortunately, there's no easy way to match records between them. For instance, latitude and longitude may have been captured differently, there might be no address or only a partial address, or the common name of the business (Jo's) might be offered instead of the formal name (Jo's Coffee Downtown).

    How do we make it easy for a developer and a machine to know that we're both talking about the same specific place, especially when that place can be a park bench, taco truck, or the Starbuck's that's on this side of the street (not that side)?

    How also do we make this system open and flexible so developers aren't locked into yet another black-box solution, since the ability to own and manage the data attributes is one of the major reasons organizations build their own datasets to begin with.

    Here's a good example of how and where location data in the sponsored link of the iOS Maps app differs from the actual place record for the Michelangelo Hotel in New York.

    These types of disconnects are most apparent in mobile operating systems. Independent developers make location apps, but these apps don’t necessary provide a clean way to move a place context from the app to the operating system, then to another app.


    As another example, I’ve pulled the below foursquare check in, displayed in the Twitter app, and finally pulled up on the iOS Maps app.

    • What sent me to this place
    • The name of the place
    • Additional useful details of the location from:
      • foursquare: Whose check in did I follow? Who's the mayor? How many people are there now?
      • Twitter: The referring tweet, other tweets nearby, references to the conversation thread.
      • Additional location attributes such as the phone number or website link.

    Continuing the Conversation

    Last summer, MapQuest started socializing the concept of the location ID pivot table to a number of organizations and start-ups. The basic concept is that the table will take a location ID from one organization and return the matching location ID from the organization you want a match from.

    So in the example above, the foursquare venue ID would be passed to Twitter; Twitter could then access other information about the venue with confidence that both applications are referring to the same place. Next, Twitter would pass the foursquare venue ID, and a Twitter Place ID, to the iOS Maps app. Lastly, the iOS app could then present the user with detailed information about the location and allow for directions with assurance of accuracy.

    Got it? A picture might help.

    Basic POI information is becoming more commoditized. The value is now weighted higher in the special characteristics of a place, not its physical location in the world. There's nothing proprietary and no "secret sauce" to the information that one of MapQuest’s offices is located at 300 Granite Run Drive, Lancaster, PA. And, the same applies for your favorite pizza place, least favorite dentist or the Empire State Building.

    If providers of place data allowed their location IDs and basic location information to be used as part of place-matching efforts, it’s my opinion (as shared during the SXSW panel), that place-data providers and other services could begin more easily aligning the same places across systems. As a developer, wouldn't it be great to query a data set like MapQuest's and get the IDs to that same place represented in other datasets like Gowalla, Yelp and Facebook as well?

    So Many Questions, So Much Opportunity

    My hope is that the conversation continues from here. There are so many opportunities for growth and collaboration, and below are just a few recommendations:

    How can you help?

    Data Service Providers:

    • Consider either:
      • Providing location/venue/spot/POI IDs for other services in the API responses to your own locations
      • Include flexibility in your terms-of-use to allow developers to use, share, and store your location IDs and align them with location IDs from other services using the basic geographic attributes of the record (lat/long., address, business name, etc.).

    Developers:

    • Ask your data and API providers to:
      • Provide Interoperable Location IDs
      • Allow you to build easy ways to associate yourself
      • Allow their IDs and basic geographic attributes to be freely published
    • Ask them to allow you to build easy ways to make associations available yourself
    • Ask them to allow their IDs and basic geography attributes to be freely published.

    My fellow panelists and I agreed to make an effort to create more visibility around this important topic. Kate has summarized her thoughts over on the GeoIQ blog in a post called "SXSW and Interoperable Location Data." You can also check out our panel in its entirety on the SXSW page for the "Interoperable Location Data" panel.

  • Xapi, NPI and Broken Polygon Report = new tools!

    We're very pleased to announce that more tools have been released today for the Open Developer Community! Here's the cool new stuff: - Xapi (pronounced 'zappy'): This a read-only OpenStreetMap (OSM) extended API providing enhanced search and querying capability for nodes, ways, and relations where the results are returned in XML format. This Xapi tool will query the OSM data by searching on tags using name=value pairs (such as amenity=pub) or by bounding box of the area of interest or both. Here's a sample URL that searches on pubs in the greater Denver area (click link to see XML output):
    [caption id="" align="aligncenter" width="498" caption="Xapi Simplified GUI"][/caption]
    We're using the Java Xapi version that Ian Dees developed earlier this year; our simplified UI is based on Emacsen's design currently used on OSM. The MapQuest page on Github is full of cool stuff, too: Xapi, Mapnik map style, Potlatch 2 Resources and more! - Nominatim Pre-indexed Data Service (NPI) is a tool for developers that can export pre-indexed OSM data hosted on the MapQuest servers as an alternate database location. The Nominatim Planet data file is quite large - in the range of 15-20 GB or so - but using the MapQuest Nominatim pre-indexed data service allows developers to have their own instance of Nominatim for running complex queries on their own servers. Having a pre-indexed file to start your Nominatim install will also speed up the installation process by as much as 75 - 90 percent! Any developer can take this pre-indexed file, start up their own Nominatim installation, hook it up to our pre-indexed updates to get an OSM Planet Nominatim version of "Minutely Mapnik" for search/geocodes (instead of map updates) with updates provided approximately every 5 minutes. Since this new system does all the indexing for you - it also reduces the CPU horsepower needed to run Nominatim in your development environment (i.e.: at home). Installation instructions are found here. - Broken Polygon Report for Nominatim: When importing OpenStreetMap (OSM) data, Nominatim validates OSM polygons and then will discard polygons that it considers 'broken' during the import process. These 'broken' polygons could be where the interior of a multipolygon is disconnected or, where a polygon intersects itself. We've created a report of these broken polygons that provides a click-and-view list that any user can see and correct the polygon errors in JOSM or Potlatch 2. [caption id="" align="aligncenter" width="538" caption="Sample of a self-intersection: a broken polygon that needs fixing."][/caption] Feel free to let us know how these tools work for you - questions and comments are always welcome in our Open forums or on Twitter @MapQuestTech!
  • Flash Maps API: Now in Mercator!

    Yes, it's true, the latest version of our Flash Maps API is in Mercator Projection! We've also added a number of new features and made other improvements with Version 7.0.0, some of which can be found in our official release notes and summarized below.

    Mercator Projection

    Online map projections can go unnoticed for many but also be the subject of great debate for others. We hope this switch proves to be more user-friendly, especially for those dealing with multiple data sources and finding that the standard for online mapping has increasingly shifted towards the more popular Mercator Projection. Developers will also be glad to know it has zero impact on their existing applications unless custom tilelayers were being utilized, in which case the tilelayer will first need to be reprojected. Below is an example using the new Flash Maps API in the Mercator Projection. It is shown demonstrating the retrieval of multiple GeoRSS feeds and the integration of video playback, and best of all, the source code has been made available for download! [caption id="attachment_1210" align="aligncenter" width="500" caption="Flash Maps API: CNN iReport Demo"][/caption]

    Higher Zoom Levels

    In addition to making the switch to Mercator, we've reduced scale limitations by now supporting zoom levels 2-18. This allows for the development of larger scale maps which show greater detail at the street level and can prove to be the optimal zoom level for your next location-based application.

    Updated Design

    With each release, we also try to mimic the robust features and design elements found on the MapQuest.com site and make it available for developers. As seen above with the CNN iReport example and others found in Examples & Tutorials on the Developer Network, the zoom controller and auto-generated POIs have been further refined to reflect the look and feel of MapQuest. You can always find more documentation and source code on the Developer Network so please feel free to browse the site. All questions and feedback can be directed at @MapQuestTech on Twitter or be posted on the Flash Maps API Forums.