UNPKG

terriajs

Version:

Geospatial data visualization platform.

97 lines (80 loc) 2.73 kB
'use strict'; /*global require*/ var URI = require('urijs'); var MapboxImageryProvider = require('terriajs-cesium/Source/Scene/MapboxImageryProvider'); var defineProperties = require('terriajs-cesium/Source/Core/defineProperties'); var defaultValue = require('terriajs-cesium/Source/Core/defaultValue'); var knockout = require('terriajs-cesium/Source/ThirdParty/knockout'); var ImageryLayerCatalogItem = require('./ImageryLayerCatalogItem'); var inherit = require('../Core/inherit'); var proxyCatalogItemUrl = require('./proxyCatalogItemUrl'); /** * A {@link ImageryLayerCatalogItem} representing a layer from the Mapbox server. * * @alias MapboxMapCatalogItem * @constructor * @extends ImageryLayerCatalogItem * * @param {Terria} terria The Terria instance. */ var MapboxCatalogItem = function(terria) { ImageryLayerCatalogItem.call(this, terria); this.url = defaultValue(this.url, '//api.mapbox.com/v4/'); this.mapId = undefined; this.accessToken = undefined; /** * Gets or sets the file extension used to retrieve Open Street Map data * This property is observable. * @type {String} */ this.fileExtension = 'png'; /** * Gets or sets the maximum tile level to retrieve from Open Street Map data * This property is observable. * @type {String} */ this.maximumLevel = 25; knockout.track(this, ['fileExtension', 'maximumLevel']); }; inherit(ImageryLayerCatalogItem, MapboxCatalogItem); defineProperties(MapboxCatalogItem.prototype, { /** * Gets the type of data item represented by this instance. * @memberOf MapboxCatalogItem.prototype * @type {String} */ type : { get : function() { return 'mapbox-map'; } }, /** * Gets a human-readable name for this type of data source, 'OpenStreet Map'. * @memberOf MapboxCatalogItem.prototype * @type {String} */ typeName : { get : function() { return 'Mapbox Map'; } } }); MapboxCatalogItem.prototype._createImageryProvider = function() { return new MapboxImageryProvider({ url: cleanAndProxyUrl(this, this.url), mapId: this.mapId, accessToken: this.accessToken, format: this.fileExtension, maximumLevel: this.maximumLevel }); }; function cleanAndProxyUrl(catalogItem, url) { return proxyCatalogItemUrl(catalogItem, cleanUrl(url)); } function cleanUrl(url) { // Strip off the search portion of the URL var uri = new URI(url); uri.search(''); return uri.toString(); } module.exports = MapboxCatalogItem;