【问题标题】:Get x and y pixel of touched MapTile in Carto mobile SDK在 Carto 移动 SDK 中获取触摸的 MapTile 的 x 和 y 像素
【发布时间】:2018-09-11 04:59:05
【问题描述】:

我有一个 RasterTileLayer 用于显示 wms 图层,我需要从 geoServer 获取触摸区域的特征;但是 geoServer 需要触摸 mapTile 的 x 和 y 坐标在 0 到 256 的范围内(导致 tile 大小设置为 256);但我不知道如何获取或计算它,您有什么解决方案吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow!请带上tour 并通读help center,特别是如何提问。你最好的选择是做你的研究,搜索关于 SO 的相关主题,然后试一试。在进行更多研究和搜索后,发布您的尝试Minimal, Complete, and Verifiable example,并具体说明您遇到的问题,这可以帮助您获得更好的答案。

标签: android maps cartodb nutiteq carto-mobile


【解决方案1】:

通常,您将通过注册 RasterTileEventListener 来接收点击事件。但是您收到的参数 (RasterTileClickInfo) 目前并未为您提供准确的点击坐标。在 4.1.4 之前的 SDK 版本中,您必须手动进行一些计算。以下 sn-p 应该对您有所帮助:

            rasterLayer.setRasterTileEventListener(new RasterTileEventListener() {
            @Override
            public boolean onRasterTileClicked(RasterTileClickInfo clickInfo) {
                MapTile mapTile = clickInfo.getMapTile();
                Projection proj = rasterLayer.getDataSource().getProjection();
                double projTileWidth = proj.getBounds().getDelta().getX() / (1 << mapTile.getZoom());
                double projTileHeight = proj.getBounds().getDelta().getY() / (1 << mapTile.getZoom());
                double projTileX0 = proj.getBounds().getMin().getX() + mapTile.getX() * projTileWidth;
                double projTileY0 = proj.getBounds().getMin().getY() + ((1 << mapTile.getZoom()) - 1 - mapTile.getY()) * projTileHeight;
                double normTileX = (clickInfo.getClickPos().getX() - projTileX0) / projTileWidth;
                double normTileY = (clickInfo.getClickPos().getY() - projTileY0) / projTileHeight;
                Log.d("", "Clicked at: " + (int) (normTileX * 256) + ", " + (int) (normTileY * 256));
                return true;
            }
        });

请注意,您可能需要翻转 y 坐标,因为它从底部开始。

附带说明一下,SDK 4.1.4 公开了 TileUtils 类,其中包含一些执行上述相同计算的静态方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多