Ich habe ein Cäsiumjs Display, und ich habe ein Kontrollkästchen (Klasse .checkbox
), die ich möchte die Anzeige eines Artikels auf der Karte zu steuern. :Laden und entladen GeoJSON von Caesium Display
var loadedGeometries = {};
// We want to load/unload geometries when clicking on the checkboxes
$('.checkbox').on('click', function (event) {
var geometryID = id; // some unique database ID for the object to be displayed
if ($(this).prop('checked')) {
// it's checked, load it onto the map
$.get('/geometry/' + geometryID, function (data) {
var myDataSource = Cesium.GeoJsonDataSource.load(data['points'], {
markerSize: 24,
markerColor: Cesium.Color.RED,
markerSymbol: 't'
}); // data['points'] is GeoJSON
// Add it to the viewer
viewer.dataSources.add(myDataSource);
// Remember the data source by ID so we can delete later
loadedGeometries[geometryID] = myDataSource;
}, 'json');
// SUCCESS! THIS PART WORKS!!
} else {
// unchecked, unload it from the map
viewer.dataSources.remove(loadedGeometries[geometryID], true);
delete loadedGeometries[geometryID];
// FAILURE: OBJECT STILL ON THE MAP?!
}
});
Die Geometrie Belastungen und angezeigt wird, wie ich erwarten würde, aber wenn ich das Kontrollkästchen deaktivieren, bleiben die Daten auf der Karte. Ich bin unklar, ob die remove
Funktion auf der dataSource
tut, was ich erwarte es zu tun. Ist das der richtige Weg, um eine DataSource
aus dem Display zu entfernen?
Danke, genagelt! Ich stimme dem Laden/Entladen von Grund auf zu. An diesem Punkt versuche ich nur einige grundlegende Funktionen zu bekommen. Danke noch einmal! – fiveclubs