OSMDROID中的MalformedURLException

时间:2018-01-08 09:24:24

标签: java android osmdroid

我尝试从网址下载maptile并在我的地图上显示

val flowUpdates = cordaRPCOps.stateMachinesFeed().updates
flowUpdates.subscribe {
    if (it.id == flowHandle.id && it is StateMachineUpdate.Removed) {
        val int = it.result.getOrThrow()
        // Handle result.
    }
}

但是我发现了这种错误

String prova = "http://a.tile.stamen.com/toner/0/0/0.png";
        try {
            prova = URLEncoder.encode(urll,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            Log.d("URL","Errore URL\n\n");
        }

        final ITileSource customTileSource = new CustomTileSource("SomeName",3,14,256,
                ".png",new String[]{prova});
        final TilesOverlay overlay = new TilesOverlay(new MapTileProviderBasic(getApplicationContext(),customTileSource),getBaseContext());
        overlay.setLoadingBackgroundColor(0);
        map.getOverlays().add(overlay);

如何解决这个问题? 提前致谢

1 个答案:

答案 0 :(得分:0)

您正在使用URLEncoder对您的网址进行编码。 URLencoder不能用于整个URL的编码。

来自documentation

  

HTML表单编码的实用程序类。这个类包含静态   将String转换为的方法   application / x-www-form-urlencoded MIME格式。欲获得更多信息   关于HTML表单编码,请参阅HTML规范。

您不需要对tilesource URL使用任何编码。

在您的tilousource网址中包含“0/0 / 0.png”可能不正确,这个应该由OSMDroid填写。但我无法确定CustomTileSource是如何实现的,因此在您的情况下可能会有所不同。

有关包含自定义tilesources的更多信息,请查看documentation for osmdroid