c# - 在零缩放的谷歌地图中,​​一个像素代表多少经度和纬度?

标签 c# android google-maps unity-game-engine google-maps-api-3

在有关此主题的文档中 posted here它提到 this 256x256 pixel Mercator world map 的左上角坐标为 180° 经度 y aprox。 85° 纬度。

我正在开发一个 Unity3D 应用程序(使用 C#),我需要在其中在 map 上叠加不同的项目,我使用简单的 GET HTTP 请求检索到 Google map API (maps.googleapis.com/maps/api/staticmap),所以我需要知道基本比例是哪个,这样我就可以用提到的每个缩放值的 base-2 大小推断所有其他比例。

最佳答案

最好的资源在这里:http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Resolution_and_Scale

分辨率和比例

赤道的精确长度(根据 wikipedia )在 WGS-84 中为 40075.016686 公里。缩放为 0 时的水平图 block 大小为 156543.03 米:

40075.016686 * 1000 / 256 ≈ 6378137.0 * 2 * pi / 256 ≈ 156543.03

这给了我们一个计算任何给定缩放分辨率的公式:

resolution = 156543.03 meters/pixel * cos(latitude) / (2 ^ zoomlevel)

一些应用程序需要知道 map 比例尺,即屏幕上的 1 厘米如何转换为 map 上的 1 厘米。

scale = 1 : (screen_dpi * 39.37 in/m * resolution)

这是让您摆脱这些计算的表格。所有值都针对赤道显示,您必须将它们乘以 cos(纬度)才能调整到给定的纬度。例如,将纬度 60(奥斯陆、赫尔辛基、圣彼得堡)除以 2。

table

这里是制表符分隔的(方便复制粘贴)

zoom    resolution, m/px    scale 96 dpi    1 screen cm is  scale 120 dpi
0   156543.03   1 : 554 678 932 5547 km 1 : 739 571 909
1   78271.52    1 : 277 339 466 2773 km 1 : 369 785 954
2   39135.76    1 : 138 669 733 1337 km 1 : 184 892 977
3   19567.88    1 : 69 334 866  693 km  1 : 92 446 488
4   9783.94 1 : 34 667 433  347 km  1 : 46 223 244
5   4891.97 1 : 17 333 716  173 km  1 : 23 111 622
6   2445.98 1 : 8 666 858   86.7 km 1 : 11 555 811
7   1222.99 1 : 4 333 429   43.3 km 1 : 5 777 905
8   611.50  1 : 2 166 714   21.7 km 1 : 2 888 952
9   305.75  1 : 1 083 357   10.8 km 1 : 1 444 476
10  152.87  1 : 541 678 5.4 km  1 : 722 238
11  76.437  1 : 270 839 2.7 km  1 : 361 119
12  38.219  1 : 135 419 1.35 km 1 : 180 559
13  19.109  1 : 67 709  677 m   1 : 90 279
14  9.5546  1 : 33 854  339 m   1 : 45 139
15  4.7773  1 : 16 927  169 m   1 : 22 569
16  2.3887  1 : 8 463   84.6 m  1 : 11 284
17  1.1943  1 : 4 231   42.3 m  1 : 5 642
18  0.5972  1 : 2 115   21.2 m  1 : 2 821

其他资源:

关于c# - 在零缩放的谷歌地图中,​​一个像素代表多少经度和纬度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44223387/

相关文章:

java - 谷歌地图在离线模式下的新版本电池消耗

c# - 根据另一个列值插入唯一序列号

c# - Task.WaitAll 方法 (Task[], Int32) 过期时不释放线程

C#从特定文件夹中获取嵌入资源或区分不同文件夹中的嵌入资源

javascript - map 拖尾后如何获取经纬度

android - 在谷歌地图上画一条线/路径

c# - 棱镜 WPF : How to moq the callback to return IDialogResult. 结果 == Buttonresult.ok

android - 如何在android中制作圆角SurfaceView?

android - 如何从模拟器中删除 SQL 数据库

android - 使用保存的图标创建通知