我正在开发一个应用程序,其中基于搜索栏移动设置的地图缩放级别说 搜索栏进度为10英里,然后计算在移动屏幕地图上覆盖10英里距离的地图的精确缩放级别。附加图像中的更多解释
我的搜索栏初始位置是1英里,最大位置是50英里,当我移动搜索栏最大位置说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位置作为参数传递,因为它在方法I中以英里为单位,通过乘以1609.34将其转换为米。但是我的全力以赴是不正确的,请任何人提前指导我。