Estoy usando ArcGIS JavaScript para crear plantillas emergentes en mi mapa. Que va muy bien. Sin embargo, tengo dificultades para evaluar las variables que establecí fuera de las llamadas popupTemplate o FeatureLayer. Por ejemplo, esto funciona bastante bien. Todo es estático.
const layerOne = new FeatureLayer({ id: "feature_layer_id", url: "https://services3.arcgis.com/myFeatureServer/0", popupTemplate: { title: `A Title Goes Here`, content: `<table> <tr> <td><img class="esri-popup__custom-image imageTrim" width="75" src="{expression/logo_url}" /></td> </tr> </table>`, expressionInfos: [ { name: "logo_url", title: "Logo URL", expression: `return "http://some.fully.qualified.url/path/image.png";` } ], }, renderer: someRendererObj, visible: false });El problema ocurre cuando trato de hacerlo dinámico. Por ejemplo, ¿qué tal hacer que la URL del logotipo sea dinámica, como:
expression: `return "http://some.fully.qualified.url/path/image-" + randomJSVariable + ".png";` La variable randomJSVariable está configurada en otro lugar de mi JS, y podría referenciarse como window.randomJSVariable .
En este caso, la expresión no se evalúa y el img se muestra como roto. ¿Alguien puede hacer una sugerencia sobre cómo puedo solucionar esto?
Si desea usar variables JS, pase una función a la propiedad de content en lugar de usar expressionInfos :
content: (evt) => { // the variable "evt" contains info on the clicked feature, possibly useful below return `<table> <tr> <td><img class="esri-popup__custom-image imageTrim" width="75" src="http://some.fully.qualified.url/path/image-${randomJSVariable}.png" /></td> </tr> </table>`; },Consulte la documentación para obtener más información:
función: el contenido se puede definir con una función de JavaScript que devuelve cualquiera de los elementos mencionados anteriormente. Esto es útil cuando su ventana emergente requiere procesamiento o funcionalidad adicional a la que se proporciona con los cuatro tipos de contenido enumerados anteriormente.