影响Android地图TileProvider中的瓦片大小?

4
我一直在尝试使用Android Maps v2中的TileOverlay,并已构建了一个非常类似于这个的自定义TileProvider
但有一件事让我感到奇怪。无论我向Tile构造函数传递哪个数字,屏幕上显示的图像总是相同的 - 4到9个瓦片平均分享屏幕空间,就像这样:

enter image description here

当然,从文档中可以预期到这一点:

瓦片的坐标是从地图的左上角(西北角)开始测量的。在缩放级别N下,瓦片坐标的x值范围从0到2N-1,并且从西向东增加,y值范围从0到2N-1,并且从北向南增加。

但是你可能会从构造函数文档中看到实际上有这样的功能:

构造一个瓷砖。

参数
width 图像的宽度(以像素为单位)
height 图像的高度(以像素为单位)
data 包含图像数据的字节数组。将通过调用decodeByteArray(byte[], int, int)从该数据创建图像。

很明显我在这里误解了一些东西。我的个人猜测是瓦片必须覆盖整个“地图瓦片”,因此不能缩小。

我的目标是使我的瓦片大约占屏幕的10dp。因此,我再次向您提出问题:

我能用TileOverlay实现这个目标吗?还是我最终会使用自定义的Marker


你解决了这个问题吗? - Alex Chengalan
不好意思,我现在知道我可以用“标记”来实现我想要的功能,但是关于“瓦片”的一般问题仍然不清楚。 - avalancha
你可以通过使用地面叠加来完成它。 - Alex Chengalan
1
你有什么问题吗?大多数瓷砖供应商使用的默认瓷砖大小为256x256像素。 - Hafizh Herdi
瓷砖应该是256dp X 256dp的,但构造函数需要具有该px值。我没有找到任何文档,但从我的测试中得出结论,任何其他值都不太重要,图像最终会按比例缩放以适应256dp。 - MobileSam
1个回答

2
构造函数中指定的瓷砖大小是您提供给地图的每个位图瓷砖的大小。如果您拥有这样的资源,这允许您为不同的屏幕提供不同密度的瓷砖。它不会改变绘制在地图上的图像的大小。地图瓷砖的物理大小由缩放级别定义,其中缩放级别0是覆盖整个世界的单个瓷砖,1是2x2个瓷砖,依此类推。这是开放式网络地图标准的一部分,而不是由Google定义的。
API文档: https://developers.google.com/maps/documentation/android/tileoverlay

Ref: http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/


这是正确的答案。得到一个而不是在问题提出几个月后找到一个变通方法真的很好。+1 - avalancha
这个答案是正确的,针对Android(这也是我们正在讨论的)。我决定添加这个评论来指出Google的不一致性,因为在iOS SDK上,他们实际上会拉取更高缩放级别的瓦片以适应设备的更高像素密度,从而得到与设备分辨率匹配的地图。如果他们能保持SDK的一致性就好了... - lbarbosa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接