Osmdroid TileSource 分配 X 和 Y 参数
Osmdroid XYTileSource passing X and Y paramaters
我真的是这个路由和地图领域的新手。我有一个基本的,也许是愚蠢的问题。我使用 osmdroid 显示来自 URL 的图块,看起来像这样
http://tile01-cdn.maptoolkit.net/terrain/15/17789/11515.png
其中15代表缩放,
17789 X 值和
11515 Y值
现在当我想使用 osmdroid 在地图上显示这个图块时,我不知道应该使用哪种 TileSource。最明显的是 XYTileSource
但构造函数没有任何要传递的 x y 参数,但我在互联网上看到很多 questions/answers 人们使用相同的对象但使用不同的构造函数。我在这里猜测库中的代码已更改。当前构造函数:
XYTileSource(String aName, int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels, String aImageFilenameEnding, String[] aBaseUrl)
所以我的问题是如何在 osmdroid 地图中显示我的这张瓦片地图,我应该使用哪种 ITileSource
?我应该实施自己的定制吗?
我就是这样尝试的:
final ITileSource tileSource = new XYTileSource("Maverik", 15, 17789, 11515, ".png", new String[] {"http://tile01-cdn.maptoolkit.net/terrain/"});
tileProvider.setTileSource(tileSource);
我得到一个空的 MapView
。
osmdroid 的用途是显示世界地图 - 有很多图块。并根据 "map view" 的居中位置显示适当的图块(该中心定义为:纬度、经度和缩放级别)。
如果这也是你想要的:
1) 例如,查看 osmdroid 中包含的默认图块源,在 TileSourceFactory
2) 然后你可以尝试这样的事情:
OnlineTileSourceBase tileSource = new XYTileSource("Maverik",
0, 17,
256, ".png",
new String[] {
"http://tile01-cdn.maptoolkit.net/terrain/",
"http://tile02-cdn.maptoolkit.net/terrain/",
"http://tile03-cdn.maptoolkit.net/terrain/"
});
mapView.setTileSource(tileSource);
您可能还想查阅 osmdroid wiki 和示例应用程序的源代码。关于如何使用我们所知道的几乎每个图块源,有大量示例。我们还会添加更多被发现的内容。
https://github.com/osmdroid/osmdroid/wiki
您无需担心 X 和 Y 坐标。它们实际上不是 lat/lon 坐标,而是网格参考。 Open Street Maps 和许多其他图块源使用相同或相似的图块坐标系。从一幅图像中的世界开始。 Zoom =1 把它分成 4 部分。那是您的 X、Y 和缩放坐标。 Zoom =2 level,把我们开始的4个tile再分成4份,得到16个tile
我真的是这个路由和地图领域的新手。我有一个基本的,也许是愚蠢的问题。我使用 osmdroid 显示来自 URL 的图块,看起来像这样
http://tile01-cdn.maptoolkit.net/terrain/15/17789/11515.png
其中15代表缩放, 17789 X 值和 11515 Y值
现在当我想使用 osmdroid 在地图上显示这个图块时,我不知道应该使用哪种 TileSource。最明显的是 XYTileSource
但构造函数没有任何要传递的 x y 参数,但我在互联网上看到很多 questions/answers 人们使用相同的对象但使用不同的构造函数。我在这里猜测库中的代码已更改。当前构造函数:
XYTileSource(String aName, int aZoomMinLevel, int aZoomMaxLevel, int aTileSizePixels, String aImageFilenameEnding, String[] aBaseUrl)
所以我的问题是如何在 osmdroid 地图中显示我的这张瓦片地图,我应该使用哪种 ITileSource
?我应该实施自己的定制吗?
我就是这样尝试的:
final ITileSource tileSource = new XYTileSource("Maverik", 15, 17789, 11515, ".png", new String[] {"http://tile01-cdn.maptoolkit.net/terrain/"});
tileProvider.setTileSource(tileSource);
我得到一个空的 MapView
。
osmdroid 的用途是显示世界地图 - 有很多图块。并根据 "map view" 的居中位置显示适当的图块(该中心定义为:纬度、经度和缩放级别)。
如果这也是你想要的:
1) 例如,查看 osmdroid 中包含的默认图块源,在 TileSourceFactory
2) 然后你可以尝试这样的事情:
OnlineTileSourceBase tileSource = new XYTileSource("Maverik",
0, 17,
256, ".png",
new String[] {
"http://tile01-cdn.maptoolkit.net/terrain/",
"http://tile02-cdn.maptoolkit.net/terrain/",
"http://tile03-cdn.maptoolkit.net/terrain/"
});
mapView.setTileSource(tileSource);
您可能还想查阅 osmdroid wiki 和示例应用程序的源代码。关于如何使用我们所知道的几乎每个图块源,有大量示例。我们还会添加更多被发现的内容。
https://github.com/osmdroid/osmdroid/wiki
您无需担心 X 和 Y 坐标。它们实际上不是 lat/lon 坐标,而是网格参考。 Open Street Maps 和许多其他图块源使用相同或相似的图块坐标系。从一幅图像中的世界开始。 Zoom =1 把它分成 4 部分。那是您的 X、Y 和缩放坐标。 Zoom =2 level,把我们开始的4个tile再分成4份,得到16个tile