code: private int getColor(int value) {
  		if (value == 0) {
  			return 0;
  		}
  
  		double scale = Math.log10(value) / Math.log10(this.topValue);
  		double lengthScale = Math.min(1.0, scale) * (colors.length - 1);
  		int index = 1 + (int) lengthScale;
  		if (index == colors.length) {
  			index--;
  		}
  		double partScale = lengthScale - (index - 1);
  
  		int r = (int) (colors[index - 1][0] + partScale
  				* (colors[index][0] - colors[index - 1][0]));
  		int g = (int) (colors[index - 1][1] + partScale
  				* (colors[index][1] - colors[index - 1][1]));
  		int b = (int) (colors[index - 1][2] + partScale
  				* (colors[index][2] - colors[index - 1][2]));
  
  		r = Math.min(255, r);
  		b = Math.min(255, b);
  		g = Math.min(255, g);
  		return (r << 16) | (g << 8) | b;
  	}
docs: Returns a color for a given absolute number that is to be shown on the
  map.
  
  @param value
  @return