Crear plantillas de aplicaciones configurables

Si tiene privilegios para crear contenido, puede crear su propia plantilla de aplicación personalizada. Cuando haya creado y configurado la plantilla de aplicación personalizada, haga que su aplicación se pueda descubrir en ArcGIS agregando su plantilla a su portal. Después, tendrá la opción de hacer la aplicación configurable para que los usuarios puedan personalizar su apariencia y comportamiento. Si su organización tiene previsto presentar su plantilla en una de sus galerías, puede compartir la plantilla con un grupo de plantillas de aplicación.

Crear y configurar una plantilla de aplicación web

Para crear su plantilla de aplicación web personalizada, puede descargar y modificar una de las plantillas de ArcGIS Configurable Apps de las que dispone, actualizar una aplicación web existente para que funcione con contenido de su portal o crear una aplicación web nueva con una de las API Web de ArcGIS.

Independientemente de cómo cree su aplicación, deberá trabajar con parámetros de dirección URL y mapas. Si va a crear una plantilla de aplicación basada en grupos, puede trabajar con grupos y tener en cuenta otros requisitos adicionales para trabajar con mapas base de Bing Maps, acceder a mapas que no sean públicos y trabajar con recursos que requieran un proxy o el uso compartido de recursos de distinto origen (CORS).

El portal de ArcGIS Enterprise incluye ArcGIS API 3.35 para JavaScript en la versión 10.9. No es necesario alojar su propia API y direccionar el portal en la versión local para plantillas de aplicaciones recién creadas; las plantillas de la aplicación web hacen referencia de forma automática a la API instalada. La API instalada localmente suele estar disponible en https://webadaptorhost.domain.com/webadaptorname/jsapi/jsapi.

Precaución:

No modifique los archivos de plantilla de aplicación web que se proporcionan con ArcGIS Enterprise, ya que el portal administra estos archivos y este puede sobrescribir posteriormente cualquier modificación que usted haga. Si desea personalizar las plantillas, haga lo siguiente:

  1. Haga una copia del archivo de plantilla existente que desea personalizar.
  2. Ponga la copia en una ubicación o un disco diferente.
  3. Personalice la copia de la plantilla.
  4. Agréguela al portal como una plantilla nueva.

Mapas Web

Las plantillas de aplicación se han diseñado para trabajar con el mapa web visualizado en Map Viewer. Normalmente, las plantillas crean un mapa basado en el mapa Web especificado en el parámetro webmap de la dirección URL. Cada API web dispone de un método de ayuda que crea un mapa utilizando información del Id. del mapa web.

Por ejemplo, para crear un mapa basado en el Id. introducido, en ArcGIS API for JavaScript se puede usar el método esri.arcgis.utils.createMap. También puede incluir una función de devolución de llamada que se ejecute cuando la solicitud sincrónica a esri.arcgis.utils.createMap se haya completado.

esri.arcgis.utils.createMap(webmap,"map",{
   mapOptions:{
     slider:false
   },
   bingMapsKey:bingMapsKey
}).then(function(response){
    map = response.map;
});
Nota:

Si alguno de los mapas web incluye un mapa base de Bing Maps, es necesario especificar una clave de Bing Maps al utilizar el método createMap. Hay varias opciones de mapas más que puede especificar, por ejemplo si se debe visualizar el deslizador, la navegación y la atribución, entre otras.

La función de callback proporciona acceso a un objeto de respuesta que, a su vez, permite acceder al objeto del mapa y a sus capas, entre otros elementos.

Grupo

Las plantillas de grupo muestran contenido del grupo especificado en una aplicación.

ArcGIS REST API proporciona acceso al contenido de su portal. Se puede usar para recuperar contenido de un grupo a partir del ID de grupo introducido.

En este ejemplo, se realiza una consulta para buscar un grupo con el Id. de entrada.

var portal = new esri.arcgis.Portal('https://webadaptorhost.domain.com/webadaptorname/');
dojo.connect(portal, 'onLoad',function(){
    portal.queryGroup(groupid).then(function(response){
        var group = response.results[0];
     });
});

Una vez encontrado el grupo, se pueden realizar consultas para recuperar elementos del grupo.

En este ejemplo, se realiza una consulta al grupo para encontrar cinco elementos de tipo Web Map o Web Mapping Application.

var queryParams = {
    q: 'type:"Web Map" -type:"Web Mapping Application"',
    num: 5
 };
group.queryItems(queryParams).then(function(response){
    var groupItems = response.results;
});

Consideraciones adicionales

Por lo general, las aplicaciones web están diseñadas para trabajar con muchos tipos de contenido, por lo que es posible que sea necesario configurar la plantilla para gestionar mapas con mapas base de Bing Maps, contenido que no sea público, etc. A continuación se indican las consideraciones específicas.

Clave de Bing Maps

Si cualquiera de los mapas que se desea mostrar utiliza un mapa base de Bing Maps, se deberá incluir una clave de Bing Maps en la aplicación. La clave de Bing Maps se proporciona como un parámetro del método createMap.

Soporte para proxy y CORS

Si la aplicación va a realizar solicitudes entre dominios distintos, se deberá habilitar CORS o agregar un proxy a la aplicación.

Agregar su plantilla al portal

Después de crear su plantilla de aplicación web, haga que se pueda descubrir en ArcGIS agregando su plantilla a su portal.

Agregar la plantilla como elemento de aplicación

Agregue su plantilla a su portal como un elemento de aplicación web y especifique la URL de la aplicación. En Propósito, elija Configurable. En API, elija JavaScript.

Después de agregar la plantilla, el elemento de plantilla aparece en su contenido y puede editar sus detalles. No olvide incluir un título descriptivo y un resumen, ya que esta información se muestra cuando los usuarios visualizan este elemento en la galería de aplicaciones configurables. Opcionalmente, se puede crear un archivo .zip que contenga los archivos de aplicación y adjuntarlo al elemento para permitir la descarga.

Registrar la plantilla de la aplicación

Después de agregar su plantilla de aplicación como un elemento, debe registrar la aplicación. Puede registrar las aplicaciones basadas en OAuth 2.0 que desarrolle. Registrar la aplicación con el portal le proporciona un Id. de aplicación. El Id. de aplicación es la base para distribuir aplicaciones y obtener informes de uso.

Cuando registre su plantilla de aplicación web, defina el tipo como Navegador con URI de redirección apuntando a la URL de la aplicación de plantilla.

Trabaje con el Administrador de identidades para que reconozca el Id. de la aplicación registrada. Para obtener más información, consulte los ejemplos OAuth Basic y OAuth Popup OAuth que se suministran con ArcGIS API for JavaScipt.

Hacer que su aplicación sea configurable

Para permitir a los usuarios personalizar la apariencia y el comportamiento de su aplicación web personalizada, puede hacerla configurable. Por ejemplo, puede permitir que los usuarios cambien los colores de la aplicación o personalicen otros ajustes.

Hacer que su aplicación sea configurable supone crear un archivo de configuración y asociar la información del archivo de configuración con el elemento de la plantilla de aplicación que ha creado.

Crear un archivo de configuración

El archivo de configuración de la aplicación es un archivo JSON que define las opciones de configuración de la plantilla de aplicación. Vea un ejemplo completo de un archivo de configuración.

Nota:

Es una buena práctica ejecutar el código JSON mediante un validador como JSONLint a fin de garantizar que el JSON tenga un formato correcto y esté libre de errores.

Siga los siguientes pasos para crear un archivo de configuración:

  1. Cree una o más secciones especificando una categoría y un conjunto de campos para cada sección.
    {
        "configurationSettings": [
            {
                "category": "",
                "fields": []
            }
        ]
    }
    
  2. Especifique las opciones de configuración utilizando los tipos de campo que se muestran en la tabla siguiente. Al crear el archivo de configuración, asegúrese de que la propiedad fieldName sea única dentro del ajuste de la configuración.

    Tipo de campoDescripción

    Párrafo

    Muestra texto explicativo en el cuadro de diálogo de configuración.

    {
           "type": "paragraph",
           "value": "* These menu items will appear in the application when the web map has layers that require them."
    }
    

    Cadena

    Acepta entrada de texto. Incluye la propiedad stringFieldOption, que especifica el tipo de cuadro de texto que se muestra en la pantalla. Los valores son textbox, textarea y richtext. La opción textbox es la predeterminada y consiste en un cuadro de texto con una sola línea. La opción textarea muestra un campo de texto más grande para introducir datos. La opción richtext muestra un editor de texto enriquecido que permite a los usuarios aplicar algunos formatos como, por ejemplo, establecer la fuente o aplicar negrita o cursiva al texto.

    {
            "type": "string",
            "fieldName": "description",
            "label": "Description",
            "tooltip": "",
             "stringFieldOption": richtext || textarea || textbox,
            "placeHolder": "Text that appears in the text box to provide a hint to users on text to enter"
    }
    

    Salida de muestra

    description:"Bike Accidents"
    

    Booleano

    Cree un cuadro de texto para especificar valores true o false. Use condition para ver si el mapa contiene la funcionalidad esperada. Si el mapa no cumple la condición, el panel de configuración no muestra la casilla de verificación ni la etiqueta.

    {
           "type": "boolean",
           "fieldName": "tool_bookmarks",
           "condition": "bookmark",
           "label": "Bookmarks",
           "tooltip": ""
     }
    

    Salida de muestra

    tool_bookmarks:false
    

    Número

    Cree un campo que acepta valores numéricos. Si el campo debe aceptar únicamente un rango de valores específico, puede utilizar el ajuste de constraints para delimitar el rango de valores específicos que se puede introducir o para dar formato a los valores introducidos.

    { 
         "type": "number",
         "fieldName": "range",
         "label": "Range:",
         "tooltip": "",
         "constraints" :{min:0,max:10,places:0}
    }
    

    Salida de muestra

    range:0.5
    

    Fecha y hora

    Crea un selector de fecha con una selección de fechas.

    {
         "type":"date",
         "fieldName" : "startDate",
         "label" : "Start Date"
    }
    

    Crea un selector de hora con una selección de horas.

    {
         "type": "time",
         "fieldName": "startTime",
         "label": "Start Time"
    }
    

    Ejemplo de salida (en formato ISO-8601) de fecha y hora

    Start Date and Time: 1970-01-01T21:30:00.000Z
    

    Opciones

    Cree una lista desplegable con una serie de opciones.

    {
       "type": "options",
       "fieldName": "theme",
       "tooltip": "Color theme to use",
       "label": "Color Scheme:",
       "options": [{
         "label": "Blue",
         "value": "blue"
       }, {
         "label": "Green",
         "value": "green"
       }, {
         "label": "Orange",
         "value": "orange"
       }]
     }
    

    Salida de muestra

    theme:"blue"
    

    Selector de color

    Muestra un selector de color para elegir un color de una paleta o especificar valores hexadecimales, RGB o HSV.

    {
       "type": "color", 
       "label": "Choose a selection color",
       "fieldName": "selectionColor"
       
     }
    

    Salida de muestra

    selectionColor:"#829254"
    

    Diálogo de mapa web

    Muestra un cuadro de diálogo para examinar o buscar un nuevo mapa para mostrarlo en la aplicación. Opcionalmente, especifique una condición para probar el mapa. Si esta condición no se cumple, el panel de configuración presenta un mensaje de validación que confirma que el mapa no cumple los requisitos. Las cadenas de condiciones son las siguientes:

    • time: el mapa tiene la función de tiempo habilitada
    • edit: la aplicación tiene al menos una capa editable
    • featurelayer: el mapa tiene al menos una capa de entidades
    • filter: el mapa tiene definido un filtro interactivo
    • 4x: el mapa contiene contenido que no se admite aún en la versión 4x de ArcGIS API for JavaScript
    {
       “type”: “webmap”,
       “conditions”: [“time”, “edit”, “featurelayer”, “filter”, “4x”]
     }
    

    Salida de muestra

    webmap:"739ef0cf75de432995c77dd44ec8f652"
    

    Cuadro de diálogo de Escena web

    Muestra un cuadro de diálogo para examinar o buscar una nueva escena web para mostrarla en la aplicación.

    {
       "type": "webscene"
     }
    

    Salida de muestra

    webscene:"ab41c86a588748128e6f5d80990a2395"
    

    Cuadro de diálogo de Grupo

    Muestra un cuadro de diálogo para examinar o buscar un nuevo grupo para mostrarlo en la aplicación.

    {
       "type": "group"
    
     }
    

    Salida de muestra

    group:"449d00a4478d4849bbb65612355d6cd1"
    

    Selector de varias capas y campos

    Presenta una vista de árbol de las capas y campos del mapa que coinciden con los tipos admitidos y con los tipos de geometría. Permite a los usuarios finales de la aplicación seleccionar varias capas y varios campos en cada capa.

    Nota:

    Si editOnly tiene el valor true, la lista de campos solo incluirá campos editables.

    {  
                   "label":"Select search layers and fields",
                   "fieldName":"searchLayers",
                   "type":"multilayerandfieldselector",
                   "editOnly":true,  
                   "tooltip":"Select layer and fields to search",
                   "layerOptions":{  
                      "supportedTypes":[  
                         "FeatureLayer"
                      ],
                      "geometryTypes":[  
                         "esriGeometryPoint",
                         "esriGeometryLine",
                         "esriGeometryPolyline",
                         "esriGeometryPolygon"
                      ]
                   },
                   "fieldOptions":{  
                      "supportedTypes":[  
                         "esriFieldTypeString"
                      ]
                   }
                }
    

    Salida de muestra

    searchLayers: [{
        "id":"Whittier_Hazards_821",
        "fields":[],
        "type":"FeatureLayer"
    }]
    

    Selector de capas y campos

    Muestra una lista desplegable de capas en el mapa filtrado por los tipos y geometrías enumerados. Opcionalmente, sirve para especificar uno o más selectores de campo para que los usuarios puedan seleccionar una capa y campos.

    Nota:

    Si editOnly tiene el valor true, la lista de campos solo incluirá campos editables.

    {  
                   "type":"layerAndFieldSelector",
                   "fieldName":"tableLayer",
                   "label":"Layer to display in table",
                   "tooltip":"Layer to display in table",
                   "fields":[  
                      {  
                         "multipleSelection":true,
                         "editOnly":true,    
                         "fieldName":"hiddenFields",
                         "label":"Hide the selected fields",
                         "tooltip":"Fields to hide in table",
                         "supportedTypes":[  
                            "esriFieldTypeSmallInteger",
                            "esriFieldTypeInteger",
                            "esriFieldTypeSingle",
                            "esriFieldTypeDouble",
                            "esriFieldTypeString"
                         ]
                      }
                   ],
                   "layerOptions":{  
                      "supportedTypes":[  
                         "FeatureLayer"
                      ],
                      "geometryTypes":[  
                         "esriGeometryPoint",
                         "esriGeometryLine",
                         "esriGeometryPolygon"
                      ]
                   }
                }
    

    Salida de muestra

    tableLayer: {
        id: "2014CyclingAccidents_All_874",
        fields: [{
            id: "urlField",
            fields: ["Casualty_Severity"]   
        }]
    }
    

    Radio

    Permite crear un botón de opción con el que solo se puede seleccionar una opción cada vez. La opción seleccionada se establecerá en verdadera.

    {
       "type": "radio",
       "fieldName": "layout",
       "tooltip": "Custom Layout",
       "label": "Custom Layout:",
       "items": [{
         "label": "Sidebar",
         "value": "sidebarmenu"
       }, {
         "label": "FullWidth",
         "value": "fullwidth"
       }, {
         "label": "default",
         "value": "Default",
         "checked": true
       }]
     }
    

    Salida de muestra

    customLayout:"fullmap"
    

    Mapas base

    Muestra una lista desplegable de todos los mapas base de Esri con nombre.

    {
      “type”: “basemaps”,
       “fieldname” :”my_basemap”,
       “label”: “Alternate Basemap”
    }
    

    Salida de muestra

    my_basemap:"satellite"
    

    Condicional

    Muestra u oculta contenido basándose en una condición con valor true o false. Por ejemplo, si una casilla de verificación Mostrar lista de capas está desactivada, la lista de capas y todas las opciones relacionadas (por ejemplo Incluir subcapas en la lista de capas) están ocultas.

    {
                   "type":"conditional",
                   "condition": false,
                   "fieldName":"showtitle",
                   "label":"Display Map Title",
                   "items":[
                     {
                        "placeHolder":"Defaults to web map title",
                        "label":"Title:",
                        "fieldName":"title",
                        "type":"string",
                        "tooltip":"Defaults to web map title"
                     },{
                          "type":"paragraph",
                          "value":"Enter a value to override the default title font size "
                       },
                       {
                          "type":"string",
                          "label":"Title font size",
                          "tooltip":"Specify title font size",
                          "fieldName":"titlefontsize",
                          "placeHolder":"20px"
                       }
                   ]
                }
    }
    

    Buscar

    Configura un panel de búsqueda para buscar entidades dentro de un campo de una capa de entidades o de direcciones utilizando un localizador. Si se configura una búsqueda de entidades, los usuarios pueden elegir la capa de entidades y buscar campos.

    {
    “type”: “Search”,
      “fieldName”: “searchConfig”,
    “label”: “Configure Search Options”
    }
    

    Salida de muestra

    searchConfig: {
    sources: [{
    locator: {
        url: "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer",
        _url: {
            path: "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer",
            query: null
        },
            normalization: true
        },
        url: "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer",
        name: "ArcGIS World Geocoding Service",
        enableSuggestions: true,
        singleLineFieldName: "SingleLine",
        enable: true,
        id: "dojoUnique3"
    }],
    activeSourceIndex: 0,
    enableSearchingAll: false
    }
    

    ScaleList

    Muestra una lista de niveles de escala predefinidos entre los cuales se puede elegir. Por ejemplo, Países, Estados, Estado, Provincias, Provincia, Área metropolitana, Ciudad, Población, Vecindad.

    {
        “type”: “scaleList”,
        “fieldName”: “customUrlLayerZoomScale”,
        “label”: “Choose zoom level”
    }
    

    Salida de muestra

    “customUrlLayerZoomScale”: 12000
    

    ExtentMap

    Crea un selector con opciones de centro de mapa y nivel de zoom.

    {
       "type":"extentMap",
       "label": "Select center and zoom",
       "fieldName": "mapExtent"
    }
    

    Salida de muestra

    mapExtent: {
      level: 2,
      coords: {
         latitude: 51.304,
         longitude: -98.7231
         }
    }
    

Asociar la información de configuración con el elemento de la plantilla

Después de crear el archivo de configuración, debe asociar la información de configuración de JSON con su plantilla de aplicación para que sea configurable.

  1. En la página del elemento de su plantilla de aplicación, haga clic en la pestaña Configuración y haga clic en el vínculo Aplicación de representación cartográfica en la red en la parte superior.
  2. En la casilla Parámetros de configuración, pegue el código JSON de su archivo de configuración.
    Nota:

    La casilla Parámetros de configuración necesita un formato JSON válido. Es una buena práctica ejecutar el JSON mediante un validador como JSONLint a fin de garantizar que el JSON tenga un formato correcto y esté libre de errores.

  3. Guardar sus ajustes.

Archivo de configuración de ejemplo

A continuación se muestra un ejemplo de un archivo de configuración completo.

{
    "configurationSettings": [
        {
            "category": "General Settings",
            "fields": [
                {
                    "type": "options",
                    "fieldName": "theme",
                    "tooltip": "Color theme to use",
                    "label": "Color Scheme:",
                    "options": [
                        {
                            "label": "Blue",
                            "value": "blue"
                        },
                        {
                            "label": "Green",
                            "value": "green"
                        },
                        {
                            "label": "Orange",
                            "value": "orange"
                        }
                    ]
                },
                {
                    "type": "string",
                    "fieldName": "layer",
                    "label": "Analysis Layer",
                    "tooltip": "Feature Layer with Facilities to search"
                },
                {
                    "type": "string",
                    "fieldName": "orgname",
                    "label": "Organization Name:",
                    "tooltip": "",
                    "stringFieldOption": "richtext",
                    "placeHolder": "Organization Name"
                },
                {
                    "type": "number",
                    "fieldName": "bufferdistance",
                    "label": "Search Distance (miles)",
                    "value": "1"
                }
            ]
        }
    ],
    "values": {
        "theme": "orange",
        "bufferdistance": 1
    }
}

Presentar su plantilla en la galería de su organización

Si desea utilizar su plantilla en la galería de aplicaciones de Map Viewer de su organización o en la galería de aplicaciones de grupos, comparta el elemento con todos y con el grupo que se esté utilizando para dicha galería. A continuación, el administrador de la organización puede configurar el mapa o configurar grupos para usar el grupo que incluya la plantilla.