¿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?

Kirill Lykov
fuente

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.

Derek Swingley
fuente
¿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
4

Intente realizar una llamada a las funciones de eliminación REST con una cláusula where "1 = 1" o algo similar.

Kirk Kuykendall
fuente
1
hola, ¿hay alguna sintaxis en la llamada REST eliminar funciones? ¿Me podría dar un ejemplo que yo estoy tratando de hacer que
jonleech
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]);
            }
        });
    });
}
Chris
fuente
0

Echa un vistazo al método clear () :

Borra todos los gráficos.

featureLayer.clear();
Leniel Maccaferri
fuente
-2

Use un cursor de actualización , seleccionando todas las funciones ("*").

Use IFeature.Delete () , y almacene cuando haya terminado.

ujjwalesri
fuente
Esta pregunta está pidiendo una solución de JavaScript, no ArcObjects.
Derek Swingley
¡Vaya ... mi error! Por favor, no hagas caso.
ujjwalesri