OSM

时间:2019-02-03 20:58:54

标签: android openstreetmap

我有两个BoundingBox角的经/纬度 我需要为这两个获取“ Projection.toPixels()” 与OpenStreetMap配合使用的点。

我已经具备基本功能,例如获取Tile 纬度/经度位置的数字,并在图块中给出纬度/经度 得到X和Y像素,但是我找不到任何代码 将帮助解决我的BoundingBox问题。

这是一个大的BoundingBox,通常在缩放8时,Tiles 具有BoundingBox点,在Tiles的正常显示网格之外 用于显示,因此“左侧”上的点类似于X:-169 Y:-343 而右边的点就像X:841 Y:849

因此,鉴于BoundingBox角的经度/纬度,我需要一个公式 点,最后以上述像素偏移之类的矩形点结束。

当前我正在使用Google Maps,我可以得到它的版本 BoundingBox基本上指向“ Projection.toPixels()”,但我是 转换为使用OpenStreetMap。它们都是基于256 X 256个图块, 并使用相同的Projection,但我不想使用任何Google Maps API调用来实现。

我已经看到一些类似JavaScript的Google Maps源代码,看起来不错,但是与使用BoundingBox无关。

我已经有显示中心纬度/经度, 缩放级别8,以及其他所需的数据,而不是所需的公式。

目标是像这样调用Android draw()函数

canvas.drawBitmap(
    imageBitmap,    // bitmap
    null,           // src rect
    BBRect,         // dest rect
    paint);     // paint

我想看看与Java类似的代码,以便我能理解 足以在需要时进行转换。

谢谢!

1 个答案:

答案 0 :(得分:0)

我想我终于可以“工作”了。

这不是理想的方法,但似乎“可行”。

投影必须考虑显示 大小才能正常工作,以找到适当的解决方案。

但是我是从角度考虑的 绘制的瓷砖网格构成了显示器。

在我的显示中,它使用了三列网格 以及每行五行磁贴,您知道它分别在X和Y处绘制了什么,您可以找出 纬度/经度的BoundingBox的边角图块是 然后您可以获取每个角落瓷砖中纬度/经度的X / Y像素偏移。

因此,您可以将X / Y磁贴绘制点“扩展”到角贴上,然后调整每个角贴中的像素偏移,并且应该有矩形点 用于BoundingBox。

我的问题是,当我最初尝试这样做时, 图像是一个很好的方法。我终于意识到 对于Android Canvas绘图坐标,它使用了 左上角,但是出于某种原因,我一直认为它是从左下角开始的,所以一旦我重新计算, 最终看起来像是在正确的位置绘制了图像。

我希望能够正确使用Projection 弄清楚如何获取toPixels(),但现在我认为 此解决方案将起作用。