Не удалось получить требуемый масштаб в google map v2?

Я работаю над приложением, в котором уровень масштабирования карты, установленный на основе движения в поисковой строке, говорит, что скорость поиска составляет 10 миль, а затем вычисляет точный масштабный масштаб карты, на которой распространяется расстояние 10 миль на карте мобильного экрана. Более подробное описание в прилагаемом изображении Введите описание изображения здесь

Мое начальное положение для поиска составляет 1 миля, а максимальное положение – 50 миль, когда я перехожу на позицию max max, скажем, 50 карт покрывают только область 30 км, в то время как она должна быть покрыта площадью 80 км. Я использую код для достижения этого –

private int zoomLevel(double _distance) { int newzoomlevel = 1; double distance = _distance * 1609.34; double equatorLength = 40075004; // in meters double widthInPixels = screenWidth(); double metersPerPixel = equatorLength / 256; int zoomLevel = 1; while ((metersPerPixel * widthInPixels) > distance) { metersPerPixel /= 2; ++zoomLevel; } Log.i("current zoom level", "zoom level = " + zoomLevel); if (zoomLevel <=19) { newzoomlevel = zoomLevel; } else { newzoomlevel = zoomLevel - 2; } return newzoomlevel; } 

Я передаю позицию seekpar в качестве параметра, так как он находится в миле в методе. Я конвертирую его в метр, умножая 1609.34. Но я не могу сказать, что это не правильно.