Osmdroid瓷砖来源显示空白地图Android

时间:2018-12-20 05:56:11

标签: android osmdroid

我的代码在下面

mapView.setTileSource(new OnlineTileSourceBase("USGS Topo", 0, 18, 256, ".png",
    new String[] { "https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/{z}/{x}/{y}.png?key=xxxxxxxxxx" }) {

    @Override
    public String getTileURLString(long pMapTileIndex) {
        return getBaseUrl()
                + MapTileIndex.getZoom(pMapTileIndex)
                + "/" + MapTileIndex.getY(pMapTileIndex)
                + "/" + MapTileIndex.getX(pMapTileIndex)
                + mImageFilenameEnding;
    }
});

https://github.com/osmdroid/osmdroid/wiki/Map-Sources

我的版本是6.0.3  map blank image

2 个答案:

答案 0 :(得分:1)

请注意复制粘贴到代码中的字符串:

https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/{z}/{x}/{y}.png?key=xxxxxxxxxx"

这显然是您的tile提供程序的某些文档中的一些示例。 {z},{x}和{y}是变量,必须由osmdroid动态添加。 xxxxx应该用您的API密钥代替。

您应仅在代码中使用基础部分:

https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/

其余的URL被添加到getTileURLString方法中。你在那里也有一个错误。在示例中可以看到,参数的顺序应为z(zoom)x和y。您已经在代码中交换了x和y。

该示例还暗示您应该具有一些API密钥。因此,请再次查看tile提供商的文档,并在必要时获取密钥。然后,您可以通过现在仅包含“ .png”的参数传递密钥。您需要将其更改为“ .png?key = yourkeyandnotthisstringorxxxxx”。

最后,您应该得到如下内容:

mapView.setTileSource(new OnlineTileSourceBase("USGS Topo", 0, 18, 256, ".png?key=yourkeyandnotthisstringorxxxxx",
    new String[] { "https://maps.tilehosting.com/c/48533dee-0f32-42a2-a6db-315bbc7ecca8/styles/bdbasic/" }) {

    @Override
    public String getTileURLString(long pMapTileIndex) {
        return getBaseUrl()
                + MapTileIndex.getZoom(pMapTileIndex)
                + "/" + MapTileIndex.getX(pMapTileIndex)
                + "/" + MapTileIndex.getY(pMapTileIndex)
                + mImageFilenameEnding;
    }
});

答案 1 :(得分:0)

您设置了用户代理吗?

 protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        IConfigurationProvider provider = Configuration.getInstance();
        provider.setUserAgentValue(BuildConfig.APPLICATION_ID);

        provider.setOsmdroidBasePath(getStorage());
        provider.setOsmdroidTileCache(getStorage());

        // provider.setDebugMapTileDownloader(true);
        //provider.setDebugTileProviders(true);

        setContentView(R.layout.osm_activity);
}