TileOverlay问题

时间:2013-05-20 16:08:53

标签: android android-maps-v2 mapbox

因此,当我使用我的MapBox地图时,Tiles会叠加在我的折线和多边形上,因此无法看到它们。

有没有办法修改这种行为?

这是我正在使用的代码:

public class MapBoxOnlineTileProvider extends UrlTileProvider {

    private static final String[] FORMATS;

    static {
        final String[] servers = new String[] { "a", "b", "c", "d" };
        final String[] formats = new String[servers.length];
        for (int i = 0; i < servers.length; i++) {
            formats[i] = String.format(
                    "%%s://%s.tiles.mapbox.com/v3/%%s/%%d/%%d/%%d.png",
                    servers[i]);
        }
        FORMATS = formats;
    }

    // ------------------------------------------------------------------------
    // Instance Variables
    // ------------------------------------------------------------------------

    private String mMapIdentifier;
    private boolean mUseSSL;

    // ------------------------------------------------------------------------
    // Constructors
    // ------------------------------------------------------------------------

    public MapBoxOnlineTileProvider(final String mapIdentifier) {
        this(mapIdentifier, false);
    }

    public MapBoxOnlineTileProvider(final String mapIdentifier,
            final boolean useSSL) {
        super(256, 256);

        this.mMapIdentifier = mapIdentifier;
        this.mUseSSL = useSSL;
    }

    // ------------------------------------------------------------------------
    // Public Methods
    // ------------------------------------------------------------------------

    public String getMapIdentifier() {
        return this.mMapIdentifier;
    }

    public void setMapIdentifier(final String anIdentifier) {
        this.mMapIdentifier = anIdentifier;
    }

    public boolean isSSLEnabled() {
        return this.mUseSSL;
    }

    public void setSSLEnabled(final boolean enableSSL) {
        this.mUseSSL = enableSSL;
    }

    @Override
    public URL getTileUrl(final int x, final int y, final int z) {
        final String f = FORMATS[new Random().nextInt(FORMATS.length)];
        final String p = this.mUseSSL ? "https" : "http";
        try {
            System.out.println(String
                    .format(f, p, this.mMapIdentifier, z, x, y));
            return new URL(String.format(f, p, this.mMapIdentifier, z, x, y));
        } catch (final MalformedURLException e) {
            e.printStackTrace();
            return null;
        }
    }

}

设置叠加层:

final MapBoxOnlineTileProvider provider = new MapBoxOnlineTileProvider(MAP_ID);
final TileOverlayOptions overlay = new TileOverlayOptions().tileProvider(provider);
mMap.addTileOverlay(overlay);

2 个答案:

答案 0 :(得分:4)

您正在寻找TileOverlayOptions.zIndex。这也适用于其他可视对象(标记除外),并且可以在使用TileOverlay.setZIndex创建对象后进行修改。

答案 1 :(得分:0)

在网页中使用zIndex。 将Overlay视为背景,因此给它们一个10的倍数的zIndex(这样做你也可以管理单一的更新(例如在不同的LOD的情况下) 然后将几何(线和poligons)视为100的倍数(因此每个几何体都是通过叠加层绘制的。)