我正在开发一个应用程序,其中基于搜索栏移动设置的地图缩放级别说搜索栏进度为 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 位置作为参数传递,因为它在方法中以英里为单位,我通过乘以 1609.34 将其转换为米。但是我的全部结果是不正确的,请任何人指导我提前谢谢。