Filtrar las capas dentro del widget LayerList

892
2
Jump to solution
12-14-2017 05:54 AM
Ronald_GuiovanniVenegas_Pulido
New Contributor III

Buenos días,

En el proyecto en el que estoy trabajando tengo ya implementado el widget LayerList y funciona perfecto para activar y desactivar las capas que se ven en el mapa. En la aplicación estoy trabajando con los usuarios de mi Portal ArcGIS, ellos tienen compartido un mapa con los layers que es al que acceden a través de mi aplicación. Para dividirlos cree varios mapas con solo las capas a las que cada usuario puede acceder en base a la dependencia a la que pertenecen. Esto hizo que tuviera que crear 8 mapas para separar cada dependencia sólo con las capas que deberian ver los funcionarios.

Lo que quiero ahora es saber si es posible filtrar las capas que aparecen en el LayerList de acuerdo a los permisos que tiene cada usuario. Es decir, si el funcionario pertenece a la "dependencia01" deberia poder ver sólo las capas marcadas con la palabara "Aire", las cuales señalo en la imagen. El resto de capas que allí se muestran deberían desaparecer.

¿Es posible hacer esto? ¿filtrar las capas dentro del LayerList en base a los permisos de usuario? ¿o en base a alguna variable en mi aplicación para hacer el filtro? Lo ideal es tener sólo un mapa en portal y que al acceder a él, en base a los permisos en la aplicación que estoy desarrollando, se filtren las capas y muestre sólo aquellas capas a las que tiene permiso cada usuario. Quiero saber si se puede hacer en el código de programación y sin la necesidad de crear muchos mapas para realizar esta tarea. Muchas gracias por la ayuda.

1 Solution

Accepted Solutions
Alexander_DanielMena
New Contributor III

Hola Ronald Guiovanni Venegas Pulido‌,

Puedes tener un solo mapa con todas las capas que inicien con la visualización en 'false'. Al momento de cargar el mapa deberás obtener los operation layers y activarlos dependiendo de la validación de usuario (implementación propia). Para el widget LayerList, te recomiendo que al construirlo sea con las capas a las cuales tiene permiso el usuario.

También tienes la opción  'DefinitionExpression' en cada capa, en donde se muestran los features según la condición dada.

Tip: "1=1" para mostrar todo y "1=0" para ocultarlo.

featureLayer.setDefinitionExpression("1=1");

Feature layer with layer definition applied | ArcGIS API for JavaScript 3.22 

Por último, ArcGIS for Server permite administrar usuarios y roles de usuario que pueden acceder a un servicio de mapa específico.

Sharing a service with your ArcGIS organization using Manager—Documentation | ArcGIS Enterprise 

View solution in original post

2 Replies
Alexander_DanielMena
New Contributor III

Hola Ronald Guiovanni Venegas Pulido‌,

Puedes tener un solo mapa con todas las capas que inicien con la visualización en 'false'. Al momento de cargar el mapa deberás obtener los operation layers y activarlos dependiendo de la validación de usuario (implementación propia). Para el widget LayerList, te recomiendo que al construirlo sea con las capas a las cuales tiene permiso el usuario.

También tienes la opción  'DefinitionExpression' en cada capa, en donde se muestran los features según la condición dada.

Tip: "1=1" para mostrar todo y "1=0" para ocultarlo.

featureLayer.setDefinitionExpression("1=1");

Feature layer with layer definition applied | ArcGIS API for JavaScript 3.22 

Por último, ArcGIS for Server permite administrar usuarios y roles de usuario que pueden acceder a un servicio de mapa específico.

Sharing a service with your ArcGIS organization using Manager—Documentation | ArcGIS Enterprise 

Ronald_GuiovanniVenegas_Pulido
New Contributor III

Buenas tardes,

Muchas gracias Alexander Daniel Mena por tu respuesta, me fue muy útil en verdad. Ya en mi proyecto puedo filtrar las capas una a una por el usuario (Puedo permitirle ver 1 o muchas tablas). Hice la implementación propia a partir de tu respuesta, fui mucho más allá, pero este fue el punto de partida.