Skip to content
This repository has been archived by the owner on Jul 17, 2024. It is now read-only.

Commit

Permalink
Merge pull request #261 from geoadmin/dev_layersconfigurl
Browse files Browse the repository at this point in the history
Sensible changed. I like it.
  • Loading branch information
Gilbert Jeiziner committed Aug 17, 2013
2 parents 0a1cedc + 52dae80 commit 31140d6
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 28 deletions.
63 changes: 37 additions & 26 deletions src/components/map/MapService.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
goog.provide('ga_map_service');

goog.require('ga_translation');
goog.require('ga_urlutils_service');

var module = angular.module('ga_map_service', [
'ga_translation'
'ga_translation',
'ga_urlutils_service'
]);

module.provider('gaTileGrid', function() {
Expand Down Expand Up @@ -34,18 +36,16 @@

module.provider('gaLayers', function() {

this.$get = ['$q', '$http', '$translate', '$rootScope', 'gaTileGrid',
function($q, $http, $translate, $rootScope, gaTileGrid) {
this.$get = ['$q', '$http', '$translate', '$rootScope', 'gaUrlUtils',
'gaTileGrid',
function($q, $http, $translate, $rootScope, gaUrlUtils, gaTileGrid) {

var wmtsGetTileUrl = 'http://wmts.geo.admin.ch/1.0.0/{Layer}/default/' +
// not configurable at the moment, but could be, in the same way
// as layersConfigUrlTemplate
var wmtsGetTileUrlTemplate =
'http://wmts.geo.admin.ch/1.0.0/{Layer}/default/' +
'{Time}/21781/{TileMatrix}/{TileRow}/{TileCol}.{Format}';

var getTopicUrl = function(topicId, lang) {
return 'http://mf-chsdi30t.bgdi.admin.ch/rest/services/' +
topicId + '/MapServer/layersconfig?lang=' +
lang + '&callback=JSON_CALLBACK';
};

var attributions = {};
var getAttribution = function(text) {
var key = text;
Expand All @@ -58,24 +58,38 @@
}
};

var getMetaDataUrl = function(topicId, lang, layerId) {
return 'http://mf-chsdi30t.bgdi.admin.ch/rest/services/' +
topicId + '/MapServer/' +
layerId + '/getlegend?lang=' +
lang + '&callback=JSON_CALLBACK';
};

var Layers = function() {
var Layers = function(layersConfigUrlTemplate, legendUrlTemplate) {
var currentTopicId;
var layers;

var getWmtsGetTileUrl = function(layer, format) {
return wmtsGetTileUrlTemplate
.replace('{Layer}', layer)
.replace('{Format}', format);
};

var getLayersConfigUrl = function(topic, lang) {
var url = layersConfigUrlTemplate
.replace('{Topic}', topic)
.replace('{Lang}', lang);
return gaUrlUtils.append(url, 'callback=JSON_CALLBACK');
};

var getMetaDataUrl = function(topic, layer, lang) {
var url = legendUrlTemplate
.replace('{Topic}', topic)
.replace('{Layer}', layer)
.replace('{Lang}', lang);
return gaUrlUtils.append(url, 'callback=JSON_CALLBACK');
};

/**
* Load layers for a given topic and language. Return a promise.
*/
var loadForTopic = this.loadForTopic = function(topicId, lang) {
currentTopicId = topicId;

var url = getTopicUrl(topicId, lang);
var url = getLayersConfigUrl(topicId, lang);

var promise = $http.jsonp(url).then(function(response) {
layers = response.data.layers;
Expand All @@ -96,9 +110,6 @@
var olLayer = layer.olLayer;
if (!angular.isDefined(olLayer)) {
if (layer.type == 'wmts') {
var wmtsUrl = wmtsGetTileUrl.replace('{Layer}', id).
replace('{Format}', layer.format);

olLayer = new ol.layer.TileLayer({
id: id,
source: new ol.source.WMTS({
Expand All @@ -111,7 +122,7 @@
projection: 'EPSG:21781',
requestEncoding: 'REST',
tileGrid: gaTileGrid.get(layer.resolutions),
url: wmtsUrl
url: getWmtsGetTileUrl(id, layer.format)
})
});
layer.olLayer = olLayer;
Expand Down Expand Up @@ -152,14 +163,14 @@
* Get Metadata of given layer id
* Uses current topic and language
* Returns a promise. Use accordingly
*/
*/
this.getMetaDataOfLayer = function(id) {
var url = getMetaDataUrl(currentTopicId, $translate.uses(), id);
var url = getMetaDataUrl(currentTopicId, id, $translate.uses());
return $http.jsonp(url);
};
};

return new Layers();
return new Layers(this.layersConfigUrlTemplate, this.legendUrlTemplate);
}];

});
Expand Down
9 changes: 9 additions & 0 deletions src/index.mako.html
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,15 @@ <h4 class="modal-title" translate>error</h4>
module.constant('gaGlobalOptions',
{serviceUrl : '${service_url}',
baseUrlPath: '${base_url_path}'});

module.config(['gaLayersProvider', function(gaLayersProvider) {
gaLayersProvider.layersConfigUrlTemplate =
'${service_url}/rest/services/{Topic}/MapServer/layersconfig' +
'?lang={Lang}';
gaLayersProvider.legendUrlTemplate =
'${service_url}/rest/services/{Topic}/MapServer/{Layer}/getlegend' +
'?lang={Lang}';
}]);
})();
</script>

Expand Down
5 changes: 5 additions & 0 deletions test/specs/Loader.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,9 @@ beforeEach(function() {
$translateProvider.translations('en', {});
$translateProvider.useLoader(undefined);
});

module(function(gaLayersProvider) {
gaLayersProvider.layersConfigUrlTemplate =
'http://example.com/{Topic}?lang={Lang}';
});
});
3 changes: 1 addition & 2 deletions test/specs/map/MapService.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ describe('ga_map_service', function() {

var layers, $httpBackend;

var expectedUrl = 'http://mf-chsdi30t.bgdi.admin.ch/' +
'rest/services/sometopic/MapServer/layersconfig?' +
var expectedUrl = 'http://example.com/sometopic?' +
'lang=somelang&callback=JSON_CALLBACK';

beforeEach(function() {
Expand Down

0 comments on commit 31140d6

Please sign in to comment.