Skip to content

Commit 9cf039b

Browse files
committed
PR #96,#90, #95
#62 add api functions : removeImageryLayer, moveLayerToIndex
2 parents 93544cf + 078797f commit 9cf039b

18 files changed

Lines changed: 16757 additions & 2763 deletions

File tree

doc/diagramme/diagramme_Itowns.mdj

Lines changed: 16226 additions & 2612 deletions
Large diffs are not rendered by default.

index.html

Lines changed: 68 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,13 @@
375375
// wmtsOptions: { tileMatrixSet: "PM"}
376376
// });
377377

378-
378+
// itowns.viewer.addImageryLayer({
379+
// protocol: "wmtsc",
380+
// id: "OPENSM",
381+
// customUrl: 'http://b.tile.openstreetmap.fr/osmfr/%TILEMATRIX/%COL/%ROW.png',
382+
// wmtsOptions: { tileMatrixSet: "PM"},
383+
// fx : 2.5,
384+
// });
379385

380386
itowns.viewer.addElevationLayer({
381387
protocol: "wmts",
@@ -532,10 +538,11 @@
532538
this.KML = false;
533539
this.AnimateTime = false;
534540
this.Orbit = false;
535-
this.api = function(){
536-
itowns.viewer.launchCommandApi();
537-
};
541+
this.api = function(){};
542+
this.api2 = function(){};
543+
this.api3 = function(){};
538544
};
545+
539546
var text = new Menu();
540547
var gui = new dat.GUI( { autoPlace: false});
541548
gui.domElement.id = 'menuDiv';
@@ -549,7 +556,6 @@
549556
if(layers[id].mimetype != "image/x-bil;bits=32")
550557
{
551558

552-
553559
text[idLayer] = true;
554560
text[idLayer+'_Opacity'] = 1.0;
555561

@@ -562,7 +568,6 @@
562568

563569
}(idLayer);
564570

565-
566571
var onchangeOpacity = function(id)
567572
{
568573
return function(newValue) {
@@ -616,18 +621,71 @@
616621
});
617622
}
618623

619-
//gui.add(text, 'Launch test api');
620-
//gui.add(text, 'StreetLevelImagery').onChange(function(newValue) {
621-
// itowns.viewer.setStreetLevelImageryOn(newValue);
624+
var removeLayer= function(nameLayer)
625+
{
626+
627+
if(itowns.viewer.removeImageryLayer(nameLayer))
628+
{
629+
var controllerTodelete = [];
630+
631+
for (var i in gui.__controllers) {
632+
633+
var controller = gui.__controllers[i];
634+
635+
if(controller.property === nameLayer || controller.property === nameLayer + '_Opacity')
636+
controllerTodelete.push(controller);
637+
}
638+
639+
for (var i in controllerTodelete)
640+
gui.remove(controllerTodelete[i]);
641+
}
642+
}
643+
644+
var controller;
645+
var layerIdCrs = 'OrthoCRS';
646+
647+
// var controller = gui.add(text,'api').name('Up');
648+
649+
// if(controller)
650+
// {
651+
// controller.onChange(function(value) {
652+
// itowns.viewer.moveLayerUp(layerIdCrs);
653+
// });
654+
// }
655+
656+
// controller = gui.add(text,'api2').name('down');
657+
658+
// if(controller)
659+
// {
660+
// controller.onChange(function(value) {
661+
// itowns.viewer.moveLayerDown(layerIdCrs);
622662
// });
663+
// }
664+
665+
// controller = gui.add(text,'api3').name('Remove Layer');
666+
667+
// if(controller)
668+
// {
669+
// controller.onChange(function(value) {
670+
// itowns.viewer.removeImageryLayer(layerIdCrs);
671+
// });
672+
// }
623673

624674
viewerDiv.addEventListener('globe-loaded',function(){
625675
console.log("Globe Loaded");
626676
//itowns.viewer.setCenter({longitude:-74,latitude:40,altitude:0});
627-
//console.log(itowns.viewer.getMaxZoomLevel("Ortho"));
628677
} ,
629678
false);
630679

680+
viewerDiv.addEventListener('Layer-removed',function(event){
681+
console.log("Layer " + event.layer + " removed");
682+
} ,
683+
false);
684+
685+
// gui.add(text, 'StreetLevelImagery').onChange(function(newValue) {
686+
// itowns.viewer.setStreetLevelImageryOn(newValue);
687+
// });
688+
631689
</script>
632690
</body>
633691
</html>

src/Core/Commander/InterfaceCommander.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Description: Cette Classe construit une commande. Cette Command ensuite pousser dans une file d'attente.
55
*/
66

7-
define('Core/Commander/InterfaceCommander', ['Core/Commander/ManagerCommands', 'Core/Commander/Command'], function(ManagerCommands, Command) {
7+
define('Core/Commander/InterfaceCommander', ['Core/Commander/ManagerCommands', 'Core/Commander/Command', 'when'], function(ManagerCommands, Command, when) {
88

99
function InterfaceCommander(type) {
1010
//Constructor
@@ -32,11 +32,18 @@ define('Core/Commander/InterfaceCommander', ['Core/Commander/ManagerCommands', '
3232
command.paramsFunction = parameters;
3333
command.layer = parameters.layer;
3434

35+
command.promise = new when.promise(function(resolve, reject) {
36+
command.resolve = resolve;
37+
command.reject = reject;
38+
});
39+
3540
//command.priority = parent.sse === undefined ? 1 : Math.floor(parent.visible ? parent.sse * 10000 : 1.0) * (parent.visible ? Math.abs(19 - parent.level) : Math.abs(parent.level) ) *10000;
3641

3742
command.priority = requester.sse ? Math.floor(requester.isVisible() && requester.isDisplayed() ? requester.sse * requester.sse * 100000 : 1.0) : 1.0;
3843

3944
this.managerCommands.addCommand(command);
45+
46+
return command.promise;
4047
};
4148

4249

src/Core/Commander/Interfaces/ApiInterface/ApiGlobe.js

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
2525

2626
var loaded = false;
2727
var eventLoaded = new Event('globe-loaded');
28+
var eventLayerRemoved = new Event('Layer-removed');
2829

2930
function ApiGlobe() {
3031
//Constructor
@@ -69,32 +70,58 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
6970

7071
};
7172

73+
ApiGlobe.prototype.getWMTSProvider = function()
74+
{
75+
return this.scene.managerCommand.getProvider(this.scene.getMap().tiles).providerWMTS;
76+
};
77+
7278
/**
7379
* Adds an imagery layer to the map. The layer id must be unique amongst all layers already inserted. The protocol rules which parameters are then needed for the function.
7480
* @constructor
7581
* @param {Layer} layer.
7682
*/
77-
7883
ApiGlobe.prototype.addImageryLayer = function(layer) {
7984

8085
var map = this.scene.getMap();
8186
var manager = this.scene.managerCommand;
82-
var providerWMTS = manager.getProvider(map.tiles).providerWMTS;
87+
var providerWMTS = this.getWMTSProvider();
8388

8489
providerWMTS.addLayer(layer);
8590
manager.addLayer(map.colorTerrain,providerWMTS);
86-
map.colorTerrain.services.push(layer.id);
91+
map.addColorLayer(layer.id)
92+
93+
};
94+
95+
ApiGlobe.prototype.moveLayerUp = function(layer){
8796

88-
var subLayer = new Layer();
97+
this.scene.getMap().moveLayerUp(layer);
98+
this.scene.renderScene3D();
99+
};
100+
101+
ApiGlobe.prototype.moveLayerDown = function(layer){
102+
103+
this.scene.getMap().moveLayerDown(layer);
104+
this.scene.renderScene3D();
105+
};
89106

90-
subLayer.services.push(layer.id);
107+
ApiGlobe.prototype.moveLayerToIndex = function(layer,newId){
91108

92-
var idLayerTile = map.colorTerrain.children.length;
109+
this.scene.getMap().moveLayerToIndex(layer,newId);
110+
this.scene.renderScene3D();
111+
};
93112

94-
subLayer.description = {style:{layerTile:idLayerTile}};
113+
ApiGlobe.prototype.removeImageryLayer = function(id){
95114

96-
map.colorTerrain.add(subLayer);
115+
if(this.scene.getMap().removeColorLayer(id))
116+
{
117+
this.getWMTSProvider().removeLayer(id);
118+
eventLayerRemoved.layer = id;
119+
this.viewerDiv.dispatchEvent(eventLayerRemoved);
120+
this.scene.renderScene3D();
121+
return true;
122+
}
97123

124+
return false;
98125
};
99126

100127
/**
@@ -162,6 +189,8 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
162189
// TODO: Normalement la creation de scene ne doit pas etre ici....
163190
// Deplacer plus tard
164191

192+
this.viewerDiv = viewerDiv;
193+
165194
viewerDiv.addEventListener('globe-builded', function(){
166195

167196
// var event = new Event('empty');
@@ -187,8 +216,6 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
187216

188217
this.scene.add(map);
189218

190-
191-
192219
//!\\ TEMP
193220
//this.scene.wait(0);
194221
//!\\ TEMP
@@ -205,15 +232,15 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
205232

206233
};
207234

208-
ApiGlobe.prototype.setLayerAtLevel = function(baseurl,layer/*,level*/) {
209-
// TODO CLEAN AND GENERIC
210-
var wmtsProvider = new WMTS_Provider({url:baseurl, layer:layer});
211-
this.scene.managerCommand.providerMap[4] = wmtsProvider;
212-
this.scene.managerCommand.providerMap[5] = wmtsProvider;
213-
this.scene.managerCommand.providerMap[this.scene.layers[0].node.meshTerrain.id].providerWMTS = wmtsProvider;
214-
this.scene.browserScene.updateNodeMaterial(wmtsProvider);
215-
this.scene.renderScene3D();
216-
};
235+
// ApiGlobe.prototype.setLayerAtLevel = function(baseurl,layer/*,level*/) {
236+
// // TODO CLEAN AND GENERIC
237+
// var wmtsProvider = new WMTS_Provider({url:baseurl, layer:layer});
238+
// this.scene.managerCommand.providerMap[4] = wmtsProvider;
239+
// this.scene.managerCommand.providerMap[5] = wmtsProvider;
240+
// this.scene.managerCommand.providerMap[this.scene.layers[0].node.meshTerrain.id].providerWMTS = wmtsProvider;
241+
// this.scene.browserScene.updateNodeMaterial(wmtsProvider);
242+
// this.scene.renderScene3D();
243+
// };
217244

218245
ApiGlobe.prototype.showClouds = function(value, satelliteAnimation) {
219246

@@ -233,7 +260,6 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
233260
ApiGlobe.prototype.setLayerVibility = function(id,visible){
234261

235262
this.scene.getMap().setLayerVibility(id,visible);
236-
237263
this.scene.renderScene3D();
238264
};
239265

@@ -246,10 +272,10 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
246272

247273
this.scene.orbit(value);
248274
};
275+
249276
ApiGlobe.prototype.setLayerOpacity = function(id,visible){
250277

251278
this.scene.getMap().setLayerOpacity(id,visible);
252-
253279
this.scene.renderScene3D();
254280
};
255281

@@ -490,6 +516,9 @@ define('Core/Commander/Interfaces/ApiInterface/ApiGlobe', [
490516
};
491517

492518
ApiGlobe.prototype.launchCommandApi = function () {
519+
520+
//this.removeImageryLayer('ScanEX');
521+
493522
// console.log(this.getMinZoomLevel("IGNPO"));
494523
// console.log(this.getMaxZoomLevel("IGN_MNT"));
495524
// console.log(this.getCenter());

src/Core/Commander/Providers/KML_Provider.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ define('Core/Commander/Providers/KML_Provider', [
9898
var south = latitude;
9999
var east = longitude;
100100
var west = longitude;
101-
var key = 'j2bfkv9whnqpq04zpzlfz2ge';
101+
var key = 'va5orxd0pgzvq3jxutqfuy0b';
102102
var url = 'http://wxs.ign.fr/' + key + '/vecteurtuile3d/BATI3D/' + 'FXX/';
103103
return this.ioDriverXML.read(urlFile).then(function(result) {
104104

@@ -157,12 +157,12 @@ define('Core/Commander/Providers/KML_Provider', [
157157

158158
return new Promise(function(resolve/*, reject*/)
159159
{
160-
this.ioDriverXML.read('http://wxs.ign.fr/j2bfkv9whnqpq04zpzlfz2ge/vecteurtuile3d/BATI3D/BU.Building.kml').then(function(/*result_0*/) {
160+
this.ioDriverXML.read('http://wxs.ign.fr/va5orxd0pgzvq3jxutqfuy0b/vecteurtuile3d/BATI3D/BU.Building.kml').then(function(/*result_0*/) {
161161

162162
// get href's node value
163163
//var kml_0 = result_0.getElementsByTagName("href");
164164
var url_href_1;
165-
var key = 'j2bfkv9whnqpq04zpzlfz2ge';
165+
var key = 'va5orxd0pgzvq3jxutqfuy0b';
166166

167167
url_href_1 = 'http://wxs.ign.fr/' + key + '/vecteurtuile3d/BATI3D/FXX/TREE/0/0_000_000.kml';
168168

@@ -314,7 +314,7 @@ define('Core/Commander/Providers/KML_Provider', [
314314

315315
/*
316316
//If Guadeloupe
317-
if (url_href_1[i] === 'http://wxs.ign.fr/j2bfkv9whnqpq04zpzlfz2ge/vecteurtuile3d/BATI3D/GLP/TREE/0/0_00_00.kml'){
317+
if (url_href_1[i] === 'http://wxs.ign.fr/va5orxd0pgzvq3jxutqfuy0b/vecteurtuile3d/BATI3D/GLP/TREE/0/0_00_00.kml'){
318318
319319
this.ioDriverXML = new IoDriverXML();
320320
this.ioDriverXML.read(url_href_1[i]).then(function(result_1)
@@ -398,7 +398,7 @@ define('Core/Commander/Providers/KML_Provider', [
398398
}
399399
400400
//If Guyane
401-
if (url_href_1[i] === 'http://wxs.ign.fr/j2bfkv9whnqpq04zpzlfz2ge/vecteurtuile3d/BATI3D/GUF/TREE/0/0_00_00.kml'){
401+
if (url_href_1[i] === 'http://wxs.ign.fr/va5orxd0pgzvq3jxutqfuy0b/vecteurtuile3d/BATI3D/GUF/TREE/0/0_00_00.kml'){
402402
403403
this.ioDriverXML = new IoDriverXML();
404404
this.ioDriverXML.read(url_href_1[i]).then(function(result_1)
@@ -482,7 +482,7 @@ define('Core/Commander/Providers/KML_Provider', [
482482
}
483483
484484
//If Martinique
485-
if (url_href_1[i] === 'http://wxs.ign.fr/j2bfkv9whnqpq04zpzlfz2ge/vecteurtuile3d/BATI3D/MTQ/TREE/0/0_00_00.kml'){
485+
if (url_href_1[i] === 'http://wxs.ign.fr/va5orxd0pgzvq3jxutqfuy0b/vecteurtuile3d/BATI3D/MTQ/TREE/0/0_00_00.kml'){
486486
487487
this.ioDriverXML = new IoDriverXML();
488488
this.ioDriverXML.read(url_href_1[i]).then(function(result_1)
@@ -566,7 +566,7 @@ define('Core/Commander/Providers/KML_Provider', [
566566
}
567567
568568
//If Réunion
569-
if (url_href_1[i] === 'http://wxs.ign.fr/j2bfkv9whnqpq04zpzlfz2ge/vecteurtuile3d/BATI3D/REU/TREE/0/0_00_00.kml'){
569+
if (url_href_1[i] === 'http://wxs.ign.fr/va5orxd0pgzvq3jxutqfuy0b/vecteurtuile3d/BATI3D/REU/TREE/0/0_00_00.kml'){
570570
571571
this.ioDriverXML = new IoDriverXML();
572572
this.ioDriverXML.read(url_href_1[i]).then(function(result_1)
@@ -649,7 +649,7 @@ define('Core/Commander/Providers/KML_Provider', [
649649
650650
}
651651
//If Saint-Pierre et Miquelon
652-
if (url_href_1[i] === 'http://wxs.ign.fr/j2bfkv9whnqpq04zpzlfz2ge/vecteurtuile3d/BATI3D/SPM/TREE/0/0_00_00.kml'){
652+
if (url_href_1[i] === 'http://wxs.ign.fr/va5orxd0pgzvq3jxutqfuy0b/vecteurtuile3d/BATI3D/SPM/TREE/0/0_00_00.kml'){
653653
654654
this.ioDriverXML = new IoDriverXML();
655655
this.ioDriverXML.read(url_href_1[i]).then(function(result_1)

src/Core/Commander/Providers/TileProvider.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,9 @@ define('Core/Commander/Providers/TileProvider', [
172172

173173
];
174174

175-
return when.all(requests);
175+
return when.all(requests).then(function() {
176+
return command.resolve(tile);
177+
});
176178
};
177179

178180
return TileProvider;

0 commit comments

Comments
 (0)