org.geomajas.gwt2.client.map.layer.VectorServerTileRenderer.java Source code

Java tutorial

Introduction

Here is the source code for org.geomajas.gwt2.client.map.layer.VectorServerTileRenderer.java

Source

/*
 * This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
 *
 * Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium.
 *
 * The program is available in open source according to the GNU Affero
 * General Public License. All contributions in this program are covered
 * by the Geomajas Contributors License Agreement. For full licensing
 * details, see LICENSE.txt in the project root.
 */

package org.geomajas.gwt2.client.map.layer;

import com.google.gwt.http.client.URL;
import org.geomajas.geometry.Coordinate;
import org.geomajas.gwt.client.command.GwtCommandDispatcher;
import org.geomajas.gwt2.client.map.layer.tile.TileConfiguration;
import org.geomajas.gwt2.client.map.render.TileCode;
import org.geomajas.gwt2.client.map.render.TileRenderer;

/**
 * {@link TileRenderer} for server-side vector layers.
 *
 * @author Jan De Moerloose
 */
public class VectorServerTileRenderer implements TileRenderer {

    private final VectorServerLayer layer;

    private String baseUrl;

    private String extension;

    private TileConfiguration tileConfig;

    public VectorServerTileRenderer(VectorServerLayer layer, TileConfiguration tileConfig, String baseUrl,
            String extension) {
        this.layer = layer;
        this.baseUrl = baseUrl;
        this.extension = extension;
        this.tileConfig = tileConfig;
    }

    @Override
    public String getUrl(TileCode tileCode) {
        double resolution = tileConfig.getResolution(tileCode.getTileLevel());
        Coordinate tileOrigin = tileConfig.getTileOrigin();
        int tileWidth = tileConfig.getTileWidth();
        int tileHeight = tileConfig.getTileHeight();
        StringBuilder urlBuilder = new StringBuilder(baseUrl);
        urlBuilder.append(tileCode.getTileLevel());
        urlBuilder.append("/");
        urlBuilder.append(tileCode.getX());
        urlBuilder.append("/");
        urlBuilder.append(tileCode.getY());
        urlBuilder.append(extension);
        urlBuilder.append("?resolution=" + resolution);
        urlBuilder.append("&tileOrigin=" + tileOrigin.getX() + "," + tileOrigin.getY());
        urlBuilder.append("&tileWidth=" + tileWidth);
        urlBuilder.append("&tileHeight=" + tileHeight);
        urlBuilder.append("&showLabels=");
        urlBuilder.append(layer.isLabeled());
        if (layer.getFilter() != null) {
            urlBuilder.append("&filter=");
            urlBuilder.append(URL.encode(layer.getFilter()));
        }
        if (GwtCommandDispatcher.getInstance().getUserToken() != null) {
            urlBuilder.append("&userToken=");
            urlBuilder.append(GwtCommandDispatcher.getInstance().getUserToken());
        }
        return urlBuilder.toString();
    }
}