4

我正在开发一个应用程序,其中基于搜索栏移动设置的地图缩放级别说搜索栏进度为 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 将其转换为米。但是我的全部结果是不正确的,请任何人指导我提前谢谢。

4

0 回答 0