Я новичок в Cesium (и JavaScript), и я пытаюсь создать веб-страницу, где пользователь может выбрать KML-файл, нажать кнопку загрузки и загрузить нагрузку KML в Смотритель цезия. На данный момент я установил тестовую страницу с жестко закодированным файлом, но когда я нажимаю кнопку, она не загружает KML. Как это сделать? Вот мой код:Cesium - добавить источник данных из события нажатия кнопки
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<!-- Tell IE to use the latest, best version (or Chrome Frame if pre-IE11). -->
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
<!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
<title>Map Demo of Cesium</title>
<script type="text/javascript" src="../Build/Cesium/Cesium.js"></script>
<style type="text/css">
@import url(../Build/Cesium/Widgets/widgets.css);
html, body, #cesiumContainer {
width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
</style>
<script type="text/javascript">
function load_file()
cesiumContainer.viewer.dataSources.removeAll();
cesiumContainer.viewer.dataSources.add(Cesium.KmlDataSource.load(../apps/SampleData/kml/MyData.kml'));
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label">Select a file for viewing:</asp:Label>
<br />
<asp:DropDownList ID="DropDownList1" runat="server" Width="208px">
</asp:DropDownList>
<br />
<asp:Button ID="Button1" runat="server" Text="View" OnClientClick ="load_file()" />
<br />
<br />
</div>
<div id="cesiumContainer" ></div>
<script type="text/javascript" >
var viewer = new Cesium.Viewer('cesiumContainer',
{imageryProvider : new Cesium.ArcGisMapServerImageryProvider({
url : '//server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
}),
baseLayerPicker : false, timeline : false, animation : false
});
var layers = viewer.imageryLayers;
var blackMarble = layers.addImageryProvider(new Cesium.ArcGisMapServerImageryProvider({
url : '//server.arcgisonline.com/ArcGIS/rest/services/reference/World_Boundaries_and_Places/MapServer'
}));
viewer.homeButton.viewModel.command();
viewer.camera.setView({position : Cesium.Cartesian3.fromDegrees(10.00, 45.0, 4500000.0)});
</script>
</form>
</body>
</html>
После того, как вы ответили, что ответы на них пока что не работают. То, что, как представляется, это воссоздание зрителя при каждом нажатии кнопки. Таким образом, хотя он может загружать файл kml, новый экземпляр средства просмотра уничтожает его. Как мне получить его только для создания зрителя один раз, а затем загрузить файл только при нажатии кнопки? – jdixon