All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mapbox.mapboxsdk.style.sources.TileSet Maven / Gradle / Ivy

There is a newer version: 9.2.1
Show newest version
package com.mapbox.mapboxsdk.style.sources;

import android.support.annotation.Size;

import com.mapbox.mapboxsdk.geometry.LatLng;

import java.util.HashMap;
import java.util.Map;

/**
 * Tile set
 *
 * @see The tileset specification
 */
public class TileSet {
    private final String tilejson;
    private String name;
    private String description;
    private String version;
    private String attribution;
    private String template;
    private String legend;
    private String scheme;
    private final String[] tiles;
    private String[] grids;
    private String[] data;
    private Float minZoom;
    private Float maxZoom;
    private Float[] bounds;
    private Float[] center;

    /**
     * @param tilejson A semver.org style version number. Describes the version of the TileJSON spec that is implemented by this JSON object.
     * @param tiles    An array of tile endpoints. {z}, {x} and {y}, if present, are replaced with the corresponding integers.
     *                 If multiple endpoints are specified, clients may use any combination of endpoints. All endpoints MUST return the same
     *                 content for the same URL. The array MUST contain at least one endpoint.
     *                 Example: "http:localhost:8888/admin/1.0.0/world-light,broadband/{z}/{x}/{y}.png"
     */
    public TileSet(String tilejson, String... tiles) {
        this.tilejson = tilejson;
        this.tiles = tiles;
    }

    public String getTilejson() {
        return tilejson;
    }

    public String getName() {
        return name;
    }

    /**
     * A name describing the tileset. The name can
     * contain any legal character. Implementations SHOULD NOT interpret the
     * name as HTML.
     * "name": "compositing",
     *
     * @param name the name to be set
     */
    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    /**
     * A text description of the tileset. The
     * description can contain any legal character.
     * Implementations SHOULD NOT
     * interpret the description as HTML.
     * "description": "A simple, light grey world."
     *
     * @param description the description to set
     */
    public void setDescription(String description) {
        this.description = description;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getAttribution() {
        return attribution;
    }

    /**
     * Default: null. Contains an attribution to be displayed
     * when the map is shown to a user. Implementations MAY decide to treat this
     * as HTML or literal text. For security reasons, make absolutely sure that
     * this field can't be abused as a vector for XSS or beacon tracking.
     * "attribution": "OSM contributors",
     *
     * @param attribution the attribution to set
     */
    public void setAttribution(String attribution) {
        this.attribution = attribution;
    }

    public String getTemplate() {
        return template;
    }

    /**
     * Contains a mustache template to be used to
     * format data from grids for interaction.
     * See https:github.com/mapbox/utfgrid-spec/tree/master/1.2
     * for the interactivity specification.
     * "template": "{{#__teaser__}}{{NAME}}{{/__teaser__}}"
     *
     * @param template the template to set
     */
    public void setTemplate(String template) {
        this.template = template;
    }

    public String getLegend() {
        return legend;
    }

    /**
     * Contains a legend to be displayed with the map.
     * Implementations MAY decide to treat this as HTML or literal text.
     * For security reasons, make absolutely sure that this field can't be
     * abused as a vector for XSS or beacon tracking.
     * "legend": "Dangerous zones are red, safe zones are green"
     *
     * @param legend the legend to set
     */
    public void setLegend(String legend) {
        this.legend = legend;
    }

    public String getScheme() {
        return scheme;
    }

    /**
     * Default: "xyz". Either "xyz" or "tms". Influences the y
     * direction of the tile coordinates.
     * The global-mercator (aka Spherical Mercator) profile is assumed.
     * "scheme": "xyz"
     *
     * @param scheme the scheme to set
     */
    public void setScheme(String scheme) {
        this.scheme = scheme;
    }

    public String[] getTiles() {
        return tiles;
    }

    public String[] getGrids() {
        return grids;
    }

    /**
     * An array of interactivity endpoints. {z}, {x}
     * and {y}, if present, are replaced with the corresponding integers. If multiple
     * endpoints are specified, clients may use any combination of endpoints.
     * All endpoints MUST return the same content for the same URL.
     * If the array doesn't contain any entries, interactivity is not supported
     * for this tileset.     See https:github.com/mapbox/utfgrid-spec/tree/master/1.2
     * for the interactivity specification.
     * 

* Example: "http:localhost:8888/admin/1.0.0/broadband/{z}/{x}/{y}.grid.json" *

* * @param grids the grids to set */ public void setGrids(String... grids) { this.grids = grids; } public String[] getData() { return data; } /** * An array of data files in GeoJSON format. * {z}, {x} and {y}, if present, * are replaced with the corresponding integers. If multiple * endpoints are specified, clients may use any combination of endpoints. * All endpoints MUST return the same content for the same URL. * If the array doesn't contain any entries, then no data is present in * the map. *

* "http:localhost:8888/admin/data.geojson" *

* * @param data the data array to set */ public void setData(String... data) { this.data = data; } public float getMinZoom() { return minZoom; } /** * 0. >= 0, < 22. An integer specifying the minimum zoom level. * * @param minZoom the minZoom level to set */ public void setMinZoom(float minZoom) { this.minZoom = minZoom; } public float getMaxZoom() { return maxZoom; } /** * 0. >= 0, <= 22. An integer specifying the maximum zoom level. * * @param maxZoom the maxZoom level to set */ public void setMaxZoom(float maxZoom) { this.maxZoom = maxZoom; } public Float[] getBounds() { return bounds; } /** * Default: [-180, -90, 180, 90]. The maximum extent of available map tiles. Bounds MUST define an area * covered by all zoom levels. The bounds are represented in WGS:84 * latitude and longitude values, in the order left, bottom, right, top. * Values may be integers or floating point numbers. * * @param bounds the Float array to set */ public void setBounds(@Size(value = 4) Float... bounds) { this.bounds = bounds; } public Float[] getCenter() { return center; } /** * The first value is the longitude, the second is latitude (both in * WGS:84 values), the third value is the zoom level as an integer. * Longitude and latitude MUST be within the specified bounds. * The zoom level MUST be between minzoom and maxzoom. * Implementations can use this value to set the default location. If the * value is null, implementations may use their own algorithm for * determining a default location. * * @param center the Float array to set */ public void setCenter(@Size(value = 2) Float... center) { this.center = center; } public void setCenter(LatLng center) { this.center = new Float[]{(float) center.getLongitude(), (float) center.getLatitude()}; } Map toValueObject() { Map result = new HashMap<>(); result.put("tilejson", tilejson); result.put("tiles", tiles); if (name != null) { result.put("name", name); } if (description != null) { result.put("description", description); } if (version != null) { result.put("version", version); } if (attribution != null) { result.put("attribution", attribution); } if (template != null) { result.put("template", template); } if (legend != null) { result.put("legend", legend); } if (scheme != null) { result.put("scheme", scheme); } if (grids != null) { result.put("grids", grids); } if (data != null) { result.put("data", data); } if (minZoom != null) { result.put("minzoom", minZoom); } if (maxZoom != null) { result.put("maxzoom", maxZoom); } if (bounds != null) { result.put("bounds", bounds); } if (center != null) { result.put("center", center); } return result; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy