How do you filter an activeList of MapLayers in Google Earth Engine (js api)?
Context: in an app where users use a dateSlider to visually interpret imagery and assign classifications. Classifications assigned by placing points. Since it is possible for multiple layers to be present but hidden, I want the point to recognise only the top-most, non-hidden layer. Code and psuedocode below:
var roi = ee.Geometry.Point([-105.61, 41.14]);
var s2sr = ee.ImageCollection("COPERNICUS/S2_SR").filterBounds(roi)
// stacked images
var image1 = s2sr.filterDate('2021-01-01', '2021-01-07').first()
var image2 = s2sr.filterDate('2020-02-01', '2020-02-07').first()
var image3 = s2sr.filterDate('2020-03-01', '2020-03-07').first()
/**
* In this toy example I am explicitly setting image3 to be hidden
* In actual use case this will be in an app and the user can toggle layers on and off
*/
Map.addLayer(image1, {}, 'im1')
Map.addLayer(image2, {}, 'im2')
Map.addLayer(image3, {}, 'im3', false)
Map.centerObject(image3)
var layers = Map.layers()
print(layers)
/**
* How to filter this ActiveList to return only the visible layers?
*
* Psuedocode:
* var shownLayers = Map.layers().filter('shown', true)
*
*
*/
// Then get the top image of the *visible* layers
var topImage = shownLayers.get(shownLayers.length() - 1)
print(topImage) // should return image2
Is there a way to filter a ActiveList without resorting to for loops? I see in the docs I need to use the function getShown
.
https://code.earthengine.google.com/?scriptPath=users%2Fcaseyengstrom%2Freprex%3AfilterActiveList