Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New KML parser #4

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions examples/KMLLayer_example.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<html>

<head>
<title>GlobWeb example</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="GlobWeb.css">

<script type="text/javascript" src="require.min.js"></script>


<script type="text/javascript">


require(['../src/GlobWeb', '../src/GoogleMouseNavigationHandler', '../src/KMLLayer'], function (GlobWeb, GoogleMouseNavigationHandler, KMLLayer)
{
var cvs = document.getElementById("GlobWebCanvas");
cvs.width = window.innerWidth;
cvs.width = 1280;
cvs.height = window.innerHeight;
cvs.height = 720;

// Create the globe
var globe = new GlobWeb.Globe( { canvas: cvs,
lighting: false,
tileErrorTreshold: 3,
continuousRendering: true } );

var GMHandler = new GoogleMouseNavigationHandler();

// Add mouse navigation
//var navigation = new GlobWeb.Navigation(globe, {handlers: [GMHandler], inertia: false });
var navigation = new GlobWeb.Navigation(globe, {inertia: false });

// Add stats
//var stats = new GlobWeb.Stats( globe, {element: 'fps', verbose: false} );

var blueMarbleLayer = new GlobWeb.WMSLayer({
baseUrl: "http://demonstrator.vegaspace.com/wmspub",
layers: "BlueMarble"
});

globe.setBaseImagery(blueMarbleLayer);
var elevationLayer = new GlobWeb.WCSElevationLayer({ baseUrl:"http://demonstrator.vegaspace.com/wcspub", coverage: "GTOPO", version: "1.0.0"});
globe.setBaseElevation( elevationLayer );

var layer = new KMLLayer({url : 'http://visioterra.org/VTAOIWatcher/vtaoiwatcher/MonitoredAreaServlet?Request=getKML&ID=gibraltar&EOP=ENVISAT_ASAR_IMM_1P_20111222_102257_20111222_102829_ENVISAT_ASAR_STA'});
globe.addLayer(layer);

var layer = new KMLLayer({url : 'http://visioterra.org/VTAOIWatcher/vtaoiwatcher/MonitoredAreaServlet?Request=getKML&ID=France_2001&EOP=Landsat-7_ETM_SLC-on_20010113_104326_20010113_104353_LANDSAT_STA_RGB'});
globe.addLayer(layer);

var layer = new KMLLayer({url : 'http://visioterra.org/VTAOIWatcher/vtaoiwatcher/MonitoredAreaServlet?Request=getKML&ID=France_2001&EOP=Landsat-7_ETM_SLC-on_20010525_101939_20010525_102006_LANDSAT_STA_RGB'});
globe.addLayer(layer);

var layer = new KMLLayer({url : 'http://visioterra.org/VTAOIWatcher/vtaoiwatcher/MonitoredAreaServlet?Request=getKML&ID=France_2001&EOP=Landsat-7_ETM_SLC-on_20010731_104841_20010731_104908_LANDSAT_STA_RGB'});
globe.addLayer(layer);

});

</script>

</head>

<body>
<canvas id="GlobWebCanvas" style="border: none;" width="1024" height="768"></canvas>
<br/>
<!--<div id="fps"><span style="font-weight:bold">FPS : 0</span></div>-->
</body>

</html>

84 changes: 84 additions & 0 deletions examples/NoBaseLayer.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<html>

<head>
<title>GlobWeb example</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="GlobWeb.css">

<script type="text/javascript" src="require.min.js"></script>


<script type="text/javascript">

require(['../src/GlobWeb', '../src/NoImageLayer', '../src/KMLLayer', '../src/TileWireframeLayer'], function (GlobWeb, NoImageLayer, KMLLayer, TileWireframeLayer)
{
var cvs = document.getElementById("GlobWebCanvas");
cvs.width = window.innerWidth;
cvs.width = 1280;
cvs.height = window.innerHeight;
cvs.height = 720;

// Create the globe
var globe = new GlobWeb.Globe( { canvas: cvs,
lighting: false,
tileErrorTreshold: 3,
continuousRendering: true } );


// Add mouse navigation
var navigation = new GlobWeb.Navigation(globe, {inertia: false });


var noLayer = new NoImageLayer({ });

globe.setBaseImagery(noLayer);
/**/
var elevationLayer = new GlobWeb.WCSElevationLayer({ baseUrl:"http://demonstrator.vegaspace.com/wcspub", coverage: "GTOPO", version: "1.0.0"});
globe.setBaseElevation( elevationLayer );
/**/

var blueMarbleLayer = new GlobWeb.WMSLayer({
baseUrl: "http://demonstrator.vegaspace.com/wmspub",
layers: "BlueMarble"
});
//globe.addLayer(blueMarbleLayer);
/**/
var layer = new KMLLayer({url : 'http://visioterra.org/VTAOIWatcher/vtaoiwatcher/MonitoredAreaServlet?Request=getKML&ID=gibraltar&EOP=ENVISAT_ASAR_IMM_1P_20111222_102257_20111222_102829_ENVISAT_ASAR_STA'});
globe.addLayer(layer)


var wireframelayer = new TileWireframeLayer({outline: true}) ;
globe.addLayer( wireframelayer);
/**/

var vis = true;
document.onkeypress = function(event){

vis = !vis;

//wireframelayer.visible( vis);
if (vis)
globe.setBaseImagery(noLayer)
else
globe.setBaseImagery(blueMarbleLayer);

}

});



</script>

</head>


<body>
<!-- <h1>Glob Web</h1>-->
<canvas id="GlobWebCanvas" style="border: none;" width="1024" height="768"></canvas>
<br/>
<!--<div id="fps"><span style="font-weight:bold">FPS : 0</span></div>-->
</body>

</html>

22 changes: 22 additions & 0 deletions src/NoImageLayer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
define(['./GeoTiling'], function(GeoTiling){

var NoImageLayer = function(options){
this.tiling = new GeoTiling( 4, 2 );
this.tilePixelSize = 256;
this.numberOfLevels = 21;
this._ready = true;
this.hasNoOverlay = true;
};

NoImageLayer.prototype._attach = function( globe )
{
this.globe = globe;
}

NoImageLayer.prototype._detach = function()
{

}

return NoImageLayer;
});
99 changes: 99 additions & 0 deletions src/RegularOverlayLayer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
//*************************************************************************
define(['./GeoBound', './RegularOverlaysRenderer', './Tile'], function(GeoBound, RegularOverlaysRenderer, Tile)
{
/** @constructor
@export
This layer draws an image overlay draped onto the terrain
Arg : options
url : url of the image to drape on the terrain
north : north value of the extent of the image
south : south value of the extent of the image
east : east value of the extent of the image
west : west value of the extent of the image
opacity : opacity of the layer
*/
RegularOverlayLayer = function( options )
{
this.quad = options.quad;
this.opacity = options.opacity || 1.0;

this.geoBound = new GeoBound(options.west, options.south, options.east, options.north);
this.state = Tile.State.NONE;
this.url = options.url;
this.globe = null;
this.visible = true;
}

//*************************************************************************

/**
Attach layer to the globe
*/
RegularOverlayLayer.prototype._attach = function( globe )
{
var renderer = globe.regularOverlaysRenderer;
if ( !renderer )
{
renderer = new RegularOverlaysRenderer(globe.tileManager);
globe.tileManager.addPostRenderer( renderer );
globe.regularOverlaysRenderer = renderer;
}
renderer.overlays.push( this );

this.globe = globe;
}

//*************************************************************************

/**
Dtach layer from the globe
*/
RegularOverlayLayer.prototype._detach = function( globe )
{
// Remove layer from the globe renderer for ground overlay
var prevRenderer = this.globe.regularOverlaysRenderer;
if ( prevRenderer )
{
var index = prevRenderer.overlays.indexOf( this );
if ( index != - 1 )
{
prevRenderer.overlays.splice(index,1);

if ( prevRenderer.overlays.length == 0 )
{
this.globe.tileManager.removePostRenderer( prevRenderer );
this.globe.regularOverlaysRenderer = null;
}
}
}
}

//*************************************************************************

/**
Returns two fields object
tilesToRender : list of the tiles ready for rendering
tilesToRequest : list of the tiles to load
*/
RegularOverlayLayer.prototype.getTileArrays = function( globe )
{
var tilesToRequest = []
var tilesToRender = []

if (this.state == Tile.State.NONE)
{
tilesToRequest.push(this);
this.state = Tile.State.REQUESTED;
}else if (this.state == Tile.State.LOADED)
{
tilesToRender.push(this);
}

return { tilesToRender : tilesToRender, tilesToRequest : tilesToRequest};
}



return RegularOverlayLayer;
});

Loading