Written by Alessandro on Tuesday 3 August 2010No comments yet.
JP Seabury over at Force Monkey compiled a list of the Top 10 most influential Salesforce.com Tech Bloggers: I’m glad to have made it there at #10.
Goes without saying that my contributions on this blog haven’t been numerous in the past year or so, but I’ll take this as an incentive to post more often if I want to make it to next year’s Top 10.
Thanks JP!
Read on: Force Monkey: The Most Influential Salesforce.com Tech Bloggers.
Written by Alessandro on Thursday 18 March 2010, tagged with: Google, Maps, Script, Visualforce. 11 comments so far.
Sometime ago we’ve seen how to integrate Google Maps in a Salesforce.com page to pinpoint a specific address on the map, more precisely, how to add an inline map to pinpoint an Account Billing Address. I revisited the script I wrote more than a year ago and produced it as a Visualforce page, here’s the result.
The finished product
Here’s a screenshot of what we are going to get:

Improvements
- I’m now using Google Maps API v3, which makes the map faster to load and doesn’t require an API key anymore.
- I removed the search term {!Account.BillingState}, so the script should now correctly map any address, not only US ones.
- It degrades nicely if the Account Billing Address isn’t found, as shown below:

Setup
Follow the 3 steps below:
- In Salesforce.com, navigate to Setup > Customize > Develop > Pages and create a new Visualforce Page with the following code:
<apex:page standardController="Account">
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var myOptions = {
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false
}
var map;
var marker;
var geocoder = new google.maps.Geocoder();
var address = "{!Account.BillingStreet}, " + "{!Account.BillingCity}, " + "{!Account.BillingPostalCode}, " + "{!Account.BillingCountry}";
var infowindow = new google.maps.InfoWindow({
content: "<b>{!Account.Name}</b><br>{!Account.BillingStreet}<br>{!Account.BillingCity}, {!Account.BillingPostalCode}<br>{!Account.BillingCountry}"
});
geocoder.geocode( { address: address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK && results.length) {
if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
//create map
map = new google.maps.Map(document.getElementById("map"), myOptions);
//center map
map.setCenter(results[0].geometry.location);
//create marker
marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
title: "{!Account.Name}"
});
//add listeners
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
google.maps.event.addListener(infowindow, 'closeclick', function() {
map.setCenter(marker.getPosition());
});
}
} else {
$('#map').css({'height' : '15px'});
$('#map').html("Oops! {!Account.Name}'s billing address could not be found, please make sure the address is correct.");
resizeIframe();
}
});
function resizeIframe() {
var me = window.name;
if (me) {
var iframes = parent.document.getElementsByName(me);
if (iframes && iframes.length == 1) {
height = document.body.offsetHeight;
iframes[0].style.height = height + "px";
}
}
}
});
</script>
<style>
#map {
font-family: Arial;
font-size:12px;
line-height:normal !important;
height:250px;
background:transparent;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</apex:page>
- Add the Visualforce page on the Account page layout (in a single-column section) and set it’s height to be 250px.
- All done!
Navigate to one of your Account records and verify the map is displaying correctly!
Let me know if you have any questions/comments!
Written by Alessandro on Thursday 18 March 2010, tagged with: greasemonkey, Script, UI. No comments yet.

Jason over at TehNrd blogged before about how the new Salesforce.com UI should look like. Now he shows us how to use Greasemonkey to change the appearance of the Salesforce.com UI based on his feedback; Greasemonkey is a great tool to quickly prototype changes to web applications (see also Setup Enhancer for Salesforce.com), I hope to have time to play with it myself.
“My first stab at changing the UI was also a bit bold, too bold. I took my changes of the UI to the extreme to really emphasize the direction I think the new UI needs to move. In reality the changes needed are much softer. What it came down to in the end was eliminating the massive amount of white space in the record detail section and bringing back the old style page block section separators”.
via Improve the New Salesforce UI with Greasemonkey | TehNrd.