Osmdroid XYTileSource传递X和Y参数

时间:2015-12-18 10:10:49

标签: android maps osmdroid

我在这个路由和地图区域真的很新。我有一个基本的,也许是愚蠢的问题。我使用osmdroid来显示来自这个

的URL的图块

http://tile01-cdn.maptoolkit.net/terrain/15/17789/11515.png

其中15代表 zoom , 17789 X 值和 11515 Y

现在,当我想使用osmdroid在地图中显示这个图块时,我不知道应该使用哪种TileSource。最明显的是XYTileSource,但构造函数没有任何x y参数可以传递,但我在互联网上看到很多问题/答案,其中人们使用相同的对象,但使用不同的构造函数。我在这里猜测代码在lib中发生了变化。当前的构造函数:

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

2 个答案:

答案 0 :(得分:1)

osmdroid的目的是显示世界地图 - 有很多瓷砖。并根据“地图视图”居中的位置显示相应的图块(此中心定义为:纬度,经度和缩放级别)。

如果这也是你想要的:

1)例如,在https://github.com/iron-meteor/iron-router/search?utf8=%E2%9C%93&q=IronRouterNoRoutes

中查看osmdroid中包含的默认磁贴源

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);

答案 1 :(得分:1)

您可能还需要咨询osmdroid wiki和示例应用程序的源代码。有很多关于如何使用我们所知道的每个瓷砖源的例子。我们也在发现它们时添加更多。

https://github.com/osmdroid/osmdroid/wiki

您无需担心X和Y坐标。它们实际上不是纬度/经度坐标,而是网格参考。打开街道地图和许多其他平铺源,使用相同或类似的平铺坐标系。从一个图像中的世界开始。缩放= 1将其分为4个部分。那是你的X,Y和Zoom坐标。缩放= 2级,将我们开始的四个图块再次划分为4,我们有16个图块。