在我的 Android 项目中,我使用 OSMdroid 的 mapquest 数据。我想知道缩放级别提供的地图比例(例如 1:10000 等)。我刚刚发现缩放级别取决于 DPI(地图的比例是否还取决于我正在显示的地图视图的宽度和高度?)。如果我使用mapquest 地图站点,我只会在左下角看到一个地图比例,但不是像 1:10000 这样的比例,这是我真正需要的。
缩放级别 16,15,14 的 1:x 比例是多少?
在我的 Android 项目中,我使用 OSMdroid 的 mapquest 数据。我想知道缩放级别提供的地图比例(例如 1:10000 等)。我刚刚发现缩放级别取决于 DPI(地图的比例是否还取决于我正在显示的地图视图的宽度和高度?)。如果我使用mapquest 地图站点,我只会在左下角看到一个地图比例,但不是像 1:10000 这样的比例,这是我真正需要的。
缩放级别 16,15,14 的 1:x 比例是多少?
这里发生了一些事情。让我按照我的理解逐步完成它。
首先,我相信您在 Mapquest 链接中看到的是比率。所以对于缩放级别 16、15、14:
14 = 1:27083
15 = 1:13541
16 = 1:6770
虽然链接没有指定它,但应该以米为单位。所以在缩放级别 14 中,每个像素代表 27083 米。
此外,Bing 地图比率可在此处找到。它们与 Mapquest 报告的数字非常接近,但并不相同。
那么,为什么数字不一样呢?因为每像素米的比率会根据您所在的纬度而变化。由于墨卡托投影产生的失真,当您改变纬度时,每像素米数不是恒定的。Bing 地图值是赤道处的值。我不知道 Mapquest 值从何而来。
最后 - 要计算 osmdroid 中的每像素米数,您可以调用:
TileSystem.GroundResolution(latitude, zoomLevel);
这将为您提供特定纬度的每像素米数。我建议您查看 osmdroid 的ScaleBarOverlay
示例,了解如何应用此信息。
停留在0°纬度或赤道线(地图地球模型地球半径6372.7982km,赤道周长约40041.472km):
比例尺(总是在赤道线上)取决于窗户的大小,如果它是 1 公里宽,它是:
如果窗口是 1 英寸宽:
如果窗口是 200 像素宽(对于 180 DPI 屏幕):
这只是在赤道线上(0°纬度)。在北方或南方,有一个校正因子要应用,即 cos(纬度)。