KML reload example

This commit is contained in:
markpet49 2020-10-22 11:23:57 -05:00
parent 685b44d15a
commit 263db0ae05
3 changed files with 175 additions and 0 deletions

52
examples/KMLRefresh.html Normal file
View File

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!--NOTE: Most Web World Wind examples use jquery, Bootstrap and requirejs but those technologies are NOT-->
<!--required by Web World Wind. See SimplestExample.html for an example of using Web World Wind without them.-->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script data-main="KMLRefresh" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.17/require.min.js"></script>
</head>
<body>
<div class="container">
<div class="jumbotron hidden-xs">
<h1 style="text-align:center">WorldWind KML Refresh Example</h1>
</div>
<div class="row">
<div class="col-sm-3">
<h4>Projection</h4>
<div class="dropdown" id="projectionDropdown">
</div>
<br>
<h4>Layers</h4>
<div class="list-group" id="layerList">
</div>
<br>
<h4>Destination</h4>
<div class="input-group" id="searchBox">
<input type="text" class="form-control" placeholder="GoTo" id="searchText"/>
<span class="input-group-btn">
<button id="searchButton" class="btn btn-primary" type="button">
<span class="glyphicon glyphicon-search"></span>
</button>
</span>
</div>
<h4>Switch KML files</h4>
<div>
<input type="button" id="switchKML" value="Switch" />
</div>
</div>
<div class="col-sm-9" id="globe">
<canvas id="canvasOne" width="1000" height="1000"
style="width: 100%; height: auto; background-color: black;">
Your browser does not support HTML5 Canvas.
</canvas>
</div>
</div>
</div>
</body>
</html>

94
examples/KMLRefresh.js Normal file
View File

@ -0,0 +1,94 @@
/*
* Copyright 2003-2006, 2009, 2017, 2020 United States Government, as represented
* by the Administrator of the National Aeronautics and Space Administration.
* All rights reserved.
*
* The NASAWorldWind/WebWorldWind platform is licensed under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License
* at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* NASAWorldWind/WebWorldWind also contains the following 3rd party Open Source
* software:
*
* ES6-Promise under MIT License
* libtess.js SGI Free Software License B
* Proj4 under MIT License
* JSZip under MIT License
*
* A complete listing of 3rd Party software notices and licenses included in
* WebWorldWind can be found in the WebWorldWind 3rd-party notices and licenses
* PDF found in code directory.
*/
/**
* Illustrates how to refresh KML files
*/
requirejs(['./WorldWindShim',
'./LayerManager'],
function (WorldWind,
LayerManager) {
"use strict";
// Tell WorldWind to log only warnings and errors.
WorldWind.Logger.setLoggingLevel(WorldWind.Logger.LEVEL_WARNING);
// Create the WorldWindow.
var wwd = new WorldWind.WorldWindow("canvasOne");
// Create and add layers to the WorldWindow.
var layers = [
// Imagery layer.
{layer: new WorldWind.BMNGLayer(), enabled: true},
// Add atmosphere layer on top of base layer.
{layer: new WorldWind.AtmosphereLayer(), enabled: true},
// WorldWindow UI layers.
{layer: new WorldWind.CompassLayer(), enabled: true},
{layer: new WorldWind.CoordinatesDisplayLayer(wwd), enabled: true},
{layer: new WorldWind.ViewControlsLayer(wwd), enabled: true}
];
for (var l = 0; l < layers.length; l++) {
layers[l].layer.enabled = layers[l].enabled;
wwd.addLayer(layers[l].layer);
}
var kmlLayer = new WorldWind.RenderableLayer("KML");
wwd.addLayer(kmlLayer);
var kmlFilePromise = new WorldWind.KmlFile('data/etnaOverlay.kml');
var displayedKML = null;
var normalKML = null;
kmlFilePromise.then(function (kmlFile) {
kmlLayer.addRenderable(kmlFile);
normalKML = kmlFile;
displayedKML = kmlFile;
wwd.redraw();
wwd.goTo(new WorldWind.Position(37.58543388598137, 14.97128369746704, 90000));
});
kmlFilePromise = new WorldWind.KmlFile('data/etnaOverlay-shifted.kml');
var shiftedKML = null;
kmlFilePromise.then(function (kmlFile) {
shiftedKML = kmlFile;
});
$('#switchKML').click(function () {
if (normalKML && shiftedKML) {
kmlLayer.removeRenderable(displayedKML);
if (displayedKML == normalKML) {
kmlLayer.addRenderable(shiftedKML);
displayedKML = shiftedKML;
} else {
kmlLayer.addRenderable(normalKML);
displayedKML = normalKML;
}
wwd.redraw();
}
});
// Create a layer manager for controlling layer visibility.
var layerManager = new LayerManager(wwd);
});

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>KML Samples</name>
<visibility>1</visibility>
<open>1</open>
<description>Unleash your creativity with the help of these examples!</description>
<Folder>
<name>Ground Overlays</name>
<description>Examples of ground overlays</description>
<GroundOverlay>
<name>Large-scale overlay on terrain</name>
<description>Overlay shows Mount Etna erupting
on July 13th, 2001.
</description>
<Icon>
<href>data/etna.jpg</href>
</Icon>
<LatLonBox>
<north>38.01904192681665</north>
<south>37.56543388598137</south>
<east>15.45832653742206</east>
<west>14.70128369746704</west>
<rotation>-0.1556640799496235</rotation>
</LatLonBox>
</GroundOverlay>
</Folder>
</Document>
</kml>