¿Cuál es la forma correcta de eliminar todas las funciones de featureLayer?


10

Tengo un featureLayery no quiero matarlo y crear otro. Quiero eliminar todas las funciones del FeatureLayer actual. Descubrí que puedo usar el applyEditsmétodo, pero para usarlo necesito tener todas las funciones que quiero eliminar. Si bien no quiero almacenarlos por separado. ¿Conoces una mejor manera de vaciar mi featureLayer cuando utilizas la API de JavaScript de ArcGIS?

Respuestas:


3

Use featureLayer.selectFeatures () con, como sugirió Kirk, una cláusula where que devolverá todas sus características. Una vez que tenga todas sus funciones, páselas a applyEdits () como las eliminaciones.


¿Esto no devolverá muchas características al cliente? Si este es un gran conjunto de datos, realmente podría ser lento.
Kirk Kuykendall

2
El único problema es que no puedo especificar la cláusula right where: probé "1 = 1", "OBJECTID> 0", etc. Pero cada vez que tengo un error "FeatureLayer :: selectFeatures - la consulta contiene uno o más parámetros no compatibles ". El código var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (consulta, ...);
Kirill Lykov

Quizás, si la capa de características no está conectada con ningún servicio de características, no admite las cláusulas where. ¿Qué piensas?
Kirill Lykov

"Si la capa de características no está conectada con ningún servicio de características, no admite las cláusulas where", eso es correcto, pero de ser así, tampoco admitiría la edición. De la referencia de la API: "Si la capa subyacente ... es de un Servicio de funciones, sus funciones se pueden editar", lo que implica que su FeatureLayer está conectado a un servicio de funciones
Stephen Lead

"tampoco admitiría la edición" - Apoyo la edición incluso si no está conectado con el servicio. Hovewer, tuve que hacer algunas soluciones.
Kirill Lykov


1

Si ha creado la capa de entidades en el lado del cliente (sin URL del lado del servidor), entonces no puede usar una consulta con una cláusula where. Pude evitar esto buscando en la extensión del mapa y luego eliminando todos los elementos que encontré. Por ejemplo:

function removeAllLayerFeatures(map, layer) {
    require(['esri/tasks/query', 'esri/layers/FeatureLayer'], function (Query, FeatureLayer) {
        var query = new Query();
        query.geometry = map.extent;
        layer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (results) {
            for (var key in results) {
                layer.remove(results[key]);
            }
        });
    });
}


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.