Можно в google maps закрашивать части карты, примерно таким кодом:
var regionCoords0 = [
new google.maps.LatLng(@point0.lat,@point0.lon),
new google.maps.LatLng(@point0.lat,@point0.lon),
new google.maps.LatLng(@point0.lat,@point0.lon),
....
];
regionPolyhon0 = new google.maps.Polygon({
paths: regionCoords0,
strokeColor: "rgb(60,60,15)",
strokeOpacity: 0.80,
strokeWeight: 2,
fillColor: "rgb(80,80,25)",
fillOpacity: 0.50
});
regionPolyhon0.setMap(map);
Если нужно. можно используся fillOpacity не полностью закрасить, а лишь затемнить часть.
Дальше вам нужны границы страны для создания полигона, точно не скажу где их можно взять. Например границы штатов есть тут
www.google.com/fusiontables/DataSource?dsrcid=210217, когда-то на
geocoding.cloudmade.com можно было получить границы объектов через их API, точно работало для городов, может и для стран работает.