En ArcGIS Javascript API 3.3, tengo una capa ArcGISDynamicMapService en mi aplicación que apunta a un servicio de mapas bastante simple (6 capas). En la aplicación, hay una GUI/widget que permite al usuario elegir varias opciones - que luego cambia dinámicamente la propiedad layerDefinitions de la capa para volver a renderizar la capa basada en su selección.
Después de definir y establecer las layerDefinitions de la capa, llamo al método layer.refresh para volver a renderizar la capa. Sin embargo, la capa re-renderizada es siempre incorrecta - o se renderizan las capas incorrectas, o se renderizan características incorrectas, y no parece haber ningún patrón en estos errores que pueda determinar. Sin embargo, una vez que el mapa es desplazado o ampliado, la capa re-renderizada se dibuja exactamente como se esperaba. A continuación se muestra el código javascript correspondiente. La función "format" es una función de formato de cadena similar a la de .NET que he añadido al script.
var layerDefinitions = [];
layerDefinitions[1] = "TransmitterId IN ({0})".format(visibleTransmitterIds.join(","));
layerDefinitions[2] = "TransmitterId IN ({0})".format(visibleTransmitterIds.join(","));
analysisResultLyr.setLayerDefinitions(layerDefinitions);
analysisResultLyr.refresh();
Usando varias herramientas de sniffing http (Google Developer tools es la opción preferida), puedo ver que la petición http saliente para mi capa de interés es exactamente la misma entre la llamada de refresco - y la llamada de pan/zoom. También he verificado el sql contenido en las definiciones de las capas, y estoy seguro de que las capas/características devueltas en la llamada de actualización son definitivamente erróneas.
¿Alguien tiene alguna idea de lo que puede estar causando esto? Mejor aún, ¿alguien conoce una forma alternativa de actualizar una capa sin hacer un paneo/zoom del mapa?
Un par de notas más:
- He desactivado el almacenamiento en caché en el cliente mediante setDisableClientCaching
- Mis cláusulas sql where hacen uso de la sentencia IN. ¿Es esto una mala idea con las geodatabases de archivos?