Create a Visualforce page to show all your customers addresses on Google Maps. Note there is a limit on the amount of Map pins that are set thus I created a timeout of a few seconds so Google does not show me pop-up an error message.
<apex:page controller="getCustomerAddress" sidebar="false" showChat="true"> <html> <head> <script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> var arraddress= new Array(); var arrids= new Array(); var content=new Array(); var arrnames= new Array(); var i=0; var map; var geocoder; function initialize() { var mapDiv = document.getElementById('map-canvas'); map = new google.maps.Map(mapDiv, { zoom: 4, mapTypeId: google.maps.MapTypeId.ROADMAP } ); google.maps.event.addListenerOnce(map, 'idle', addMarkers); } function addMarkers() { for (var i = 0; i < arraddress.length; i++) { content[i] = arrnames[i]+' '+arraddress[i]; geocodeAddress(arraddress[i],arrids[i],content[i]); } } function geocodeAddress(addds,id,content) { geocoder = new google.maps.Geocoder(); geocoder.geocode( { 'address': addds}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({map: map,position: results[0].geometry.location}); var infowindow = new google.maps.InfoWindow({content: content}); google.maps.event.addListener(marker, 'mouseover', function() { infowindow.open(map,this);}); google.maps.event.addListener(marker, 'mouseout', function() {infowindow.close();}); google.maps.event.addListener(marker, 'click', function() { window.open('/'+id);}); } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { setTimeout(function() {geocodeAddress(addds, id, content);}, 200); } else { alert("Geocode was not successful for the following reason: " + status); } }); } google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body style="font-family: Arial; border: 0 none;"> <div id="map-canvas" style="width: 1500; height: 750px"></div> <apex:repeat value="{!Address}" var="a"> <script> arraddress[i]= '{!a.BillingStreet}, {!a.BillingCity}, {!a.BillingPostalCode}, {!a.BillingCountry}'; arrids[i]='{!a.id}'; arrnames[i]='{!a.name}'; i++; </script> </apex:repeat> </body> </html> </apex:page>
Where is “getCustomerAddress” class ?
Do you have Test Class for this?