Saturday, June 13, 2009

Improving Bing maps (formerly called MS Live Search)

Microsoft recently rebranded their "Live Search" maps as "Bing". The only notable feature is that it has a bird's-eye-view, which is lacking from Google Maps. I use the bird's eye feature often because online real estate sites like redfin, trulia, etc generate links to show the houses that are for sale. Recently, Bing maps became much less usable. Whenever the site loads, an obnoxious pop-up demands that I install the 3D viewer client -- complete with shady-as-hell setup.exe file. I don't see any way to permanently decline the 3D viewer. There is also a stupid list of mapped items on the righthand side of the screen. This might be a useful feature, but it should be possible to permanently disable (especially when there is only one thing in the list!). The left side of the screen is dominated by ads. Here's what it looks like:


Even after dismissing the popup with its annoying bandwidth-hogging flash movie, there is still very little map actually visible on the screen. The solution is to write a greasemonkey script for Firefox. This tool allows users to write javascript that is executed for a pre-determined set of webpages (like http://www.bing.com/*). Here is what Bing looks like after my greasemonkey script was setup:


Aahhh, that's so much better. It actually looks like a map now, and I don't have to spend at least three clicks closing stupid windows everytime that I see a Bing link somewhere on the 'Net.

Search for greasemonkey to find out more about this tool. Here is my script (note: I am a rank-beginner when it comes to javascript. I am sure there are numerous problems with this code, but it does work):




var preventlayer = document.getElementById('__preventLayer__');
if (preventlayer) {
preventlayer.className = 'boguspreventlayer';

}

var mainpopup = document.getElementById('help');
if (mainpopup) {
mainpopup.style.display = 'none';
}


var taskarea = document.getElementById('msve_taskArea');
if (taskarea) {
taskarea.style.width = '1px';
}

var mainmap = document.getElementById('msve_mapArea');
if (mainmap) {
mainmap.style.marginLeft = '0px';
mainmap.style.width = '100%';
}



document.addEventListener('DOMNodeInserted',function(){

var sidepopup = document.getElementById('msve_ScratchPad');
if (sidepopup) {
sidepopup.style.display = 'none';
}

},true);



var footer= document.getElementById('sb_foot');
if (footer) {
footer.style.height = '0px';
}


// hack to get AJAX to redraw the map after greasemonkey altered the map width
window.resizeBy(-1,0);

No comments:

Post a Comment