решено:
от Androd API Google: zoomlevel устанавливает масштаб увеличения карты.Значение будет ограничено от 1 до 21 включительно, хотя не во всех областях есть плитки с более высоким уровнем масштабирования.Это просто устанавливает уровень масштабирования напрямую;Параметры: zoomLevel - При zoomLevel 1, экватор Земли имеет длину 256 пикселей.Каждый последующий уровень масштабирования увеличивается с коэффициентом 2. Возвращает: новый уровень масштабирования, от 1 до 21 включительно.
Таким образом, с учетом экватора E = 40075 км или 21,638,8 миль с учетом расстояния до масштабирования D= 20 км или миль
уровень масштабирования: L = log2 (E / D) + 1
Это простой метод, который я использовал, не забудьте установить E = 21,638,8, если выхочу использовать мили ...
public static byte zoomLevel (double distance){
byte zoom=1;
double E = 40075;
Log.i("Astrology", "result: "+ (Math.log(E/distance)/Math.log(2)+1));
zoom = (byte) Math.round(Math.log(E/distance)/Math.log(2)+1);
// to avoid exeptions
if (zoom>21) zoom=21;
if (zoom<1) zoom =1;
return zoom;
}