Bing blogs

This is a place devoted to giving you deeper insight
into the news, trends, people and technology behind Bing.

Maps Blog


Introducing the AJAX map control V7

Today we have the distinct pleasure of announcing the release of the new Bing AJAX map control v7 (V7). It seems to be the year of 7s at Microsoft and we’re excited to carry on the reputation that V7 does indeed denote something very special.

Let’s start off with discussing V7 performance:

- V7 is less than 1/3 the size of our v6.3 control. This smaller size helps V7 load faster than our previous control.
- V7 renders multiple points on a map up to 3 times faster than v6.3. This improvement will help you deliver more information to your users, faster.

These numbers are based on internal tests of our compressed controls, including all secondary JavaScript, CSS and image-files. I invite you to try out V7 for yourself and compare. Add 10, 100 or 100s of pins and evaluate the performance. I think you’ll be pleased.

While you’re doing this, make sure to check out three other major features:

Optimized for mobile web. As more business is done on mobile, you need to have a control that’s built for mobile browsing. V7 delivers in these scenarios with a small control size, support for HTML5 and touch support for mobile devices.

Enhanced Bird’s eye. V7 introduces our new “Bird’s eye” to AJAX. It’s the same 45-degree perspective, viewable from all 4 compass directions imagery that you love – enhanced to include seamless, smooth panning at all zoom levels, life-like building models in urban centers and 3D-like terrain features. This new experience is ripe to provide a differentiated and highly useful perspective to your applications.

New map style. First seen on, our new map style for “road” and “hybrid” modes is now the default map style for V7. This means that when you build a V7 app, you’ll have the opportunity to show it off on an updated canvas with improved look/feel, readability and interaction with data overlays. We’ve received some great customer feedback since its first debut and we’ll be incorporating that into an updated version soon.

It also means that effective today, all Bing Maps customers have the opportunity to opt-in to the new map style for testing or production “go live” scenarios across all controls/APIs (REST Services, SOAP Services and Silverlight Map Control opt-in also went live today). This opt-in period will end on April 30, 2011 and beginning on May 1, 2011, the new map style will become the default and only road style delivered across all Bing mapping services.

So there you are –V7 is fast, is great for mobile web and introduces new and differentiated ways for you to connect with your customers. To learn more about all of the features and enhancements in V7, take a look at the Bing AJAX map control v7 SDK and the recent announcement regarding Also look out for future blog posts that delve deeper into individual functionality.

I’d like to thank our engineering team for all of their hard work and our customers for building some of the best applications on the web - I look forward to seeing what you do with V7 on desktop and mobile!

Follow us @BingMaps 
Learn more on Facebook & Wikipedia

Floyd Mendoza,
Bing Maps Product Manager
Enterprise Mapping


  • Two things:

    1. Looked at the API, but I can't figure out how to add a Description (hover/click more info bubble text) to a pushpin

    2. I copied the "Displaying Location Search Results Using the REST Services" example, which works fine, until I put the mapDiv on an AjaxControlToolkit tab control, which throws a script error.

  • @Henri Fournier

    I've knocked up a quick example of how to add infoboxes to display pushpin information in v7 and posted it to the Bing Maps Development forum, here:

  • "This smaller size helps V7 load faster than our previous control" Indeed, it seems faster.

  • Im trying to find if something has changed, but in the example:

    It looks like a bing map key is required.  In my 6.2 version, this was not required, has this changed?

  • @MikeInBA

    In v6.2 you used to provide your map key using the SetCredentials() method after the map was initialised.

    Now you supply it in the credentials property when you first create the map.

  • How do you add HTML controls to the map in v7? I can't find an equivalent to the map.AddControl method in the API. Any help would be appreciated!

  • @alastair.aitchison

    Ok, then I must be confused, because this code doesnt have any credentials and seems to use the control without issue?????

  • I think what's missing is an explanation to current developers as to what it will take to move to version 7. Scanning the API, it seems like it is completely different. It will not be as simple as changing the URL of the mapping API, but it looks like I would need to completely rewrite my application. Where is the documentation on migration? Current developers need this. Also, is there some timeframe for when version 6.3 would stop working? This is very important to know. Thanks.

  • Is there any reason the new AJAX control would not work inside of a Sharepoint 2007 webpart? I've done some testing and the map does not render in my webpart (6.3 version of control did work). The same version 7 code I am using in my webpart works fine in a standard ASP.NET page. Thanks.

  • Hi all,

    I apologize for the delay in support, I am tracking down the people who can confirm my answers.

  • @kakwanda: The blog says: "This opt-in period will end on April 30, 2011 and beginning on May 1, 2011, the new map style will become the default and only road style delivered across all Bing mapping services."

  • @SSchwane: This may be the same problem I'm having with placing the mapDiv on an AjaxControlToolkit tab control, which generates an error in the script. The error message is: "htmlfile: Can't move focus to the control beacuse it is invisible, not enabled, or of a type that does not accept focus." The error is generated at s.focus() in veapicore.js, where "s" is a DispHTMLButtonElement. If I click Continue, the map renders, but none of the built-in controls appear, nor do my pushpins.

  • @Kakwane



    Hi all. While Brian works on getting some help to answer the technical questions, I need to address some open questions and misinterpretation in the comments thread that should be cleared up.

    - Is a key required in v7? Yes a key is required.

    - Was one required in v6.2? No. The key requirement is a precedent that started with the release of our REST APIs in June.

    We've made enhancements to our key provisioning system to make getting started simple and easy. There's also a lot of extra features available in the key portal - if you haven't dug in lately, you should check it out:

    - When is end of life for v6.x? We have not announced an end date for the v6 control and there will be no auto-upgrade to v7. As you mentioned, the codebase is completely different and we realize that many of our users will need additional time to make the transition to v7. We will post an announcement to this blog and send out an email to all customers once we are ready to announce the 12 month (or possibly longer) notice of end of life for the v6.x control. I should also mention that there will be no new investment in v6.x going forward unless a major bug is found.

    - What is happening on May 1, 2011? This is the switch over date for the new map style. This date should not be confused with the end of life date for v6.x. I encourage all of you to test out the new map style beginning today and to switch your production applications to the new map style once you have tested it within your site.

    - Is migration documentation going to be provided for the move from v6.x to v7? We are looking into materials and activities focused at educating technical users on what's new in v7. Be on the lookout for future materials to be announced on this blog.

    Hope this helps. Thanks for posting and for trying out the new control.

  • After some testing, here is my feedback.

    First, the great:

    - joy and happiness: touch events work on mobile without hack and even seem reliable, thank god, that one gave me quite a few headaches, I love you guys :-)

    - it's more reactive and the transitions are definitely smoother

    - overriding functions (with a version that supports more parameters for example) seems much easier to do

      (e.g. I will probably add support for a couple more parameters in Pushpin.setOptions)

    - quite a few functions like contains() will be handy to have natively instead of adding them by hand

    - changing the background behind tiles seems easier to theme

    And the rest:

    - I will surely miss infoboxes as I had finally fine-tuned a nice CSS3 theme for 6.3 :-(

    Sure I will reuse the CSS, but thing like placing the arrow at the right "y" position and on the proper left/right side, or where to open the infobox depending on the location of the pin on the map / size of the map and such calculations that 6.3 did will probably be frustrating to redo.

    - I will also miss the Tiny and Small dashboards as I had also made a stylesheet that can override each button/state appearance, but that's ok, the new dashboard is a nice compromise: at least now I won't have to add an extra "bird's eye view" button in the small dashboard's HTML anymore.

    - no more REST API functions ? Sure it's not that hard to redo, but it was a nifty shortcut.

    - Shape layers: obsolete concept or are they replaced by entity collections ?

    - I haven't tested it yet, but I hope the hack to be able to draw outside polygons to simulate multipolygons will still work, otherwise I'm definitely stucked with 6.3 as I need that feature.

    - credentials: if you really want to force users to use credentials, I would suggest either not to load tiles at all, either display the error in front of the map: personally, I had to go thru Firebug to find out what the error was saying; at first I even thought it was just a copyright notice because it disappeared so fast behind the tiles and because you can't  click the blue link.

    And a quick note too: the "draggable" option for pins seems to work fine, however it's missing in the documentation of PushpinOptions.

  • Here's a follow up to my previous post regarding a script error when divMap is on an AjaxControlToolkit tab control.

    I was loading the map like this:

    <script type="text/javascript">

     $(document).ready(function () {



    which causes the script error I previously mentioned. Based on the error, it sounds like a timing thing were it's trying to render the map, but the container control itself hasn't rendered yet. So, I commented out the above code and tried this instead:

    <input id="Button1" type="button" value="Load Map" onclick="GetMap();" />

    and clicking the button renders the map without error. So the problem is not with putting the divMap inside an AjaxControlToolkit tab container per se, but with the timing of the rendering. So I tried the following to prove out my theory:

    <script type="text/javascript">

       $(document).ready(function () {

           setTimeout('GetMap();', 10) // 10 millisecond delay



    I altered the timeout delay from 1000 (1 second) all the way down to 1 millisecond and the map still rendered correctly most of the time, but it was inconsistent at 1 ms. It seems to be OK at 10 ms. If I don't use setTimeout, I get the script error on s.focus() every time.

    So at least I now have a workaround, but I didn't have this problem with 6.3