/*
 * FX Map Control - https://github.com/ClemensFischer/FX-Map-Control
 * © 2016 Clemens Fischer
 */
package fxmapcontrol;

class BingMapsTileSource extends TileSource {

    private final String[] subdomains;

    public BingMapsTileSource(String urlFormat, String[] subdomains) {
        super(urlFormat);
        this.subdomains = subdomains;
    }

    @Override
    public String getUrl(int x, int y, int zoomLevel) {
        if (zoomLevel < 1) {
            return null;
        }

        String subdomain = subdomains[(x + y) % subdomains.length];
        char[] quadkey = new char[zoomLevel];

        for (int z = zoomLevel - 1; z >= 0; z--, x /= 2, y /= 2) {
            quadkey[z] = (char) ('0' + 2 * (y % 2) + (x % 2));
        }

        return getUrlFormat()
                .replace("{subdomain}", subdomain)
                .replace("{quadkey}", new String(quadkey));
    }
}