2 votos

Cambio de color del símbolo de texto de impresión de ArcGIS Javascript

Tengo una aplicación de mapas de ArcGIS Javascript que utiliza la tarea de impresión para exportar el mapa a un PDF. He dado a los usuarios la posibilidad de añadir gráficos al mapa, como puntos o polígonos, junto con la posibilidad de añadir un gráfico TextSymbol para personalizar la salida del mapa en PDF. El problema que tengo es con la apariencia del TextSymbol en la impresión del PDF. Por alguna razón no puedo cambiar el color del texto en la salida. Aunque el texto en el mapa web es rojo, el color del texto en el pdf es negro. He aplicado código para cambiar el color de los textLayers realizando un esriRequest.setRequestPreCallback para interceptar el JSON que va al servicio de impresión. Sin embargo, el texto sigue siendo negro en la salida. Mi código para eso está abajo. He hecho console.logs para ver cómo queda el objeto después de cambiar el color y sí lo cambia, pero el texto sigue apareciendo en negro en la salida del pdf. ¿Alguien sabe cómo cambiar el color del texto en la salida del PDF o sabe cómo añadir algún tipo de fondo rectangular en el TextSymbol para que las etiquetas puedan ser más visibles en las salidas del PDF?

function changeTextColor(){
    esriRequest.setRequestPreCallback(function(ioArgs) {
        if (ioArgs.content && ioArgs.content.Web_Map_as_JSON){
            var webMapAsJson = ioArgs.content.Web_Map_as_JSON;
            var webMapObj = JSON.parse(webMapAsJson);
            for (var w in webMapObj.operationalLayers){
                if (webMapObj.operationalLayers[w].id = "map_graphics" && webMapObj.operationalLayers[w].url == undefined){
                    for (var l in webMapObj.operationalLayers[w].featureCollection.layers){
                        if (webMapObj.operationalLayers[w].featureCollection.layers[l].layerDefinition.name == "textLayer"){
                            for (var f in webMapObj.operationalLayers[w].featureCollection.layers[l].featureSet.features){
                                //currently I am just trying to change the text to be turquoise but it keeps returning black text on pdf output
                                webMapObj.operationalLayers[w].featureCollection.layers[l].featureSet.features[f].symbol.color[0] = 0;
                                webMapObj.operationalLayers[w].featureCollection.layers[l].featureSet.features[f].symbol.color[1] = 255;
                                webMapObj.operationalLayers[w].featureCollection.layers[l].featureSet.features[f].symbol.color[2] = 255;
                            }
                        }
                    }
                }
            }
            ioArgs.content.Web_Map_as_JSON = JSON.stringify(webMapObj);
        }
        return ioArgs;          
    });
}

1voto

Grakiao Puntos 307

He resuelto mi problema utilizando la respuesta de este hilo - https://geonet.esri.com/thread/118646 . Al final no tuve que hacer un esriRequest.setRequestPreCallback. He creado un simple menú desplegable de opciones para el color y el tamaño que el usuario puede seleccionar y luego dibujar un textSymbol utilizando esas opciones y termina saliendo correctamente en la salida del PDF.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X