【问题标题】:Osmdroid tile sources shows blank map androidOsmdroid 平铺源显示空白地图 android
【发布时间】:2018-12-20 05:56:11
【问题描述】:

我的代码在下面

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

【问题讨论】:

  • 您是否在 Google Developer Console 上配置了您的地图?您必须提供加载地图的密钥。
  • 我正在使用 osm(开放街道地图),他们的默认瓦片源工厂运行良好,并在我的应用程序中显示地图,但对于生产,我使用自己的瓦片源,其中键由“xxx”隐藏,但它没有工作..我找不到问题在哪里..
  • 您需要为生产生成不同的密钥。调试工具不起作用。
  • 它是我们的生产密钥,在我们的 Web 应用程序中运行良好。 @Jaymin
  • 你检查过你的 LogCat 了吗?

标签: android osmdroid


【解决方案1】:

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

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

这显然是您的磁贴提供商的一些文档中的一些示例。 {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=yourkeyandnotthisstringorxxxxxx”。

最后你应该得到这样的结果:

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

【讨论】:

  • 好像加载了一些东西。也许是一些海洋?可以放大地图吗?一个/或平底锅?
  • @KaziAshrafulAzam 好的,这意味着仍然有问题。您可以尝试再次交换 x 和 y 坐标,也许它们一开始是正确的(即使这意味着提供者的文档中的示例/url 不正确)。当需要对缩放级别进行某些操作时,osmdroid 文档中还提到了一些格式 (TMS)。但我不知道更多。我不知道您的磁贴提供商实际使用的是什么。
【解决方案2】:

你设置了用户代理吗?

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

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多