Comparto este artículo que lo he escrito ya hace un tiempo porque un alumno me pidió si tenia algo de documentación sobre el uso de mapas en Oracle APEX 5.0. Espero sea de utilidad 🙂
Saludos!
Clarisa
Crear Mapas en Oracle Application Express 5.0
La creación de mapas en Oracle Application Express se basa en el componente AnyMap Interactive Maps, una extensión de AnyChart. AnyMap es una solución flexible basada en Macromedia Flash que permite a los desarrolladores visualizar datos geográficos relacionados. Los gráficos de mapas son representados por un navegador y requieren Flash Player 9 o posterior. Para obtener más información acerca de AnyMap, puedes ir a esta URL: http://6.anychart.com/products/anymap/overview/.
AnyChart almacena los datos de mapas en archivos que tienen una extensión *.amap y admite 298 archivos de mapas para los Estados Unidos de América, Europa, Asia, África, Oceanía, América del Norte y América del Sur. Para representar un mapa deseado, seleccionamos el origen del mapa en el asistente (por ejemplo, California) y el mapa XML hace referencia automáticamente al archivo .amap del origen del mapa deseado, ca.amap.
Para navegar por los mapas disponibles, podemos consultar la Lista de Mapas en la documentación de AnyChart http://6.anychart.com/products/anychart/mapList/index.php
Sintáxis de la consulta SQL para crear Mapas
Para crear un mapa en Apex nosotros definimos la consulta SQL usando el Asistente. Seleccionamos el tipo de mapa, el origen del mapa e ingresamos la consulta SQL respetando la siguiente sintaxis:
SELECT link, label, value
FROM …
Donde:
- Link es la URL.
- label Es el texto que identifica el punto en el mapa con el que deseamos asociar los datos. La ID de la región o el nombre de región del mapa se utilizará como etiqueta.
- value Es la columna numérica que define los datos a asociar con un punto del mapa.
Creando un Mapa de California
Seguidamente vamos a crear un ejemplo de mapa en nuestra aplicación en APEX.
Creamos una aplicación vacía de tipo escritorio.
1. Desde la página de inicio de la aplicación
2. Hacemos clic en el botón Crear Página
3. Seleccionamos Gráfico de Mapa
4. Disponemos de 3 tipos de Gráficos: (Estados Unidos de América, Mapas de Mundo y de los Continentes, Europa). Seleccionamos la primera opción
5. Estados Unidos de América tiene mapas agrupados en 4 secciones: Regiones, Subregiones, Mapas de Países, Estados. Expandimos el Árbol de Estados y luego expandimos el árbol de Mapas de Distritos o Regiones para los 50 Estados y seleccionamos California
6. En Atributos de Página, ingresamos la información del título, la plantilla usada como “Blank with Attributes” y sin ruta de navegación
7. En Menú de Navegación, seleccionamos Crear nueva entrada del menú de navegación
8. En Atributos del mapa seleccionamos los que deseamos, en mi caso dejaré los valores por defecto, hacemos clic en el botón Siguiente
9. Ingresamos la Consulta SQL de Origen
SELECT NULL LINK, COUNTY LABEL, PERSONAS POPULACION FROM ( SELECT 'Los Angeles' county, 9904341 personas FROM dual UNION ALL SELECT 'Orange' county, 3054269 personas FROM dual UNION ALL SELECT 'Santa Barbara' county, 423800 personas FROM dual UNION ALL SELECT 'San Diego' county, 3137431 personas FROM dual UNION ALL SELECT 'San Luis Obispo' county, 271619 personas FROM dual UNION ALL SELECT 'Santa Clara' county, 1819137 personas FROM dual)
Nota: Usamos las referencias de mapa para conocer el nombre de la región
10. Hacemos click en Siguiente y luego en el botón Crear
En el mapa podemos ver algunos distritos con su población, información que he recopilado del año 2012. Para mis lectores les cuento que vivo en el Condado de Orange que se encuentra en el medio entre Los Angeles (azul) y San Diego (amarillo).
Para colocar la leyenda del mapa a la derecha, necesitamos ir al Diseñador de Paginas, seleccionamos Atributos del mapa y en la sección Leyenda indicamos que se muestre por ejemplo a la derecha y que el Origen de Elemento de Leyenda sea Puntos.
Si nosotros tenemos la información cargada en una tabla de nuestra base de datos, es muy importante que el nombre de la región se corresponda con el nombre de la región de las referencias de los mapas.
Como cualquier componente de AnyChart, fácilmente podemos personalizar nuestro mapa usando la sección de Atributos del mapa:
Hay ciertas configuraciones del mapa que no podemos controlarlas usando los atributos estándar en la página de Atributos del Mapa. Para controlar aún más la apariencia de un mapa, podemos utilizar el XML Personalizado.
XML Personalizado
Para usar el XML personalizado del mapa:
1. Desde el Diseñador de páginas de la página del mapa hacemos clic en Atributos
2. En el panel de la derecha de propiedades expandimos la sección XML Personalizado
3. Seleccionamos SI en Personalizado y se expandirá el código XML
Crear Mapa a partir de una tabla
En este apartado vamos a crear un mapa de Sudamérica basado en una tabla.
Los datos que toma el archivo south_america.amap del listado de mapas disponibles de AnyMap es como lo vemos en la siguiente imagen:
Esta información la puedes ver en este link: http://6.anychart.com/products/anychart/docs/users-guide/map_reference/World-World-and-Continent-Maps-South-America-Flash-Map.html
Creamos la tabla en nuestra base de datos, para ello, usamos el asistente del Taller de Datos — Utilidades — Taller de Datos:
En Carga de Datos seleccionamos Datos de Texto y se abre el asistente:
Seleccionamos Nueva Tabla y luego Copiar y Pegar, hacemos clic en el botón Siguiente.
Copiamos todos los datos que están abajo, observando que la primera fila corresponde a títulos de columnas y el símbolo para determinar la separación de columnas es la coma (,).
He agregado una columna a la tabla que hace referencia a la cantidad de habitantes de cada país.
REGION_ID,REGION_NAME,CENTROID_X,CENTROID_Y,HABITANTES AR,Argentina,-63.6166725158691,-38.4160976409912,43823000 BL,Bolivia,-63.5886535644531,-16.290153503418,11066000 BR,Brazil,-51.9252796173096,-14.2350039482117,207012000 CI,Chile,-87.9341735839844,-36.7125015258789,18286000 CO,Colombia,-74.2966156005859,4.57086849212646,49067000 EC,Ecuador,-83.4399871826172,-1.78567731380463,16656000 FG,French Guiana,-53.1257820129395,3.93388867378235,746000 FK,Falkland Islands (Islas Malvinas),-59.5236129760742,-51.7962532043457,3000 GY,Guyana,-58.9301795959473,4.86041593551636,746000 NS,Suriname,-56.0277824401855,3.91930508613586,570000 PA,Paraguay,-58.4438323974609,-23.4425029754639,6905000 PE,Peru,-75.0151519775391, -9.18996698409319,31660000 UY,Uruguay,-55.7658348083496,-32.5227794647217,3487000 VE,Venezuela,-66.589729309082,6.42374992370605,31236000
Hacemos clic en el botón Siguiente.
Ingresamos el nombre de la tabla como SOUTH_AMERICA y verificamos que todas las columnas estén correctamente seleccionadas. Hacemos clic en el botón Siguiente.
Indicamos que la clave primaria sea la columna REGION_ID y hacemos clic en el botón Cargar Datos.
De esa forma tendremos la tabla creada en nuestro esquema de la base de datos.
Crear Región con el Mapa de Sudamérica
Desde el diseñador de páginas de la página donde hicimos el primer mapa de California, creamos una nueva región de tipo Gráfico de Mapa.
Título: Sudamérica
Plantilla: Blank with Attributes
Cuadrícula:
Iniciar Nueva Fila: No
Columna: Automático
En la serie ingresamos la siguiente consulta SQL:
SELECT NULL link, REGION_NAME label, HABITANTES value FROM SOUTH_AMERICA
En Atributos del Gráfico, seleccionamos en Mapa:
Nivel 1: Mapas de Mundo y de los Continentes
Nivel 2: Sudamérica
Columna de Región de Mapa: REGION_NAME
Definir Intervalos de valores por medio de Series
En este apartado veremos cómo podemos definir para nuestro mapa de Sudamérica tres series diferentes en las que especificaremos lo siguiente:
- La Serie 1 mostrará los países que tienen menos de 15 millones de habitantes.
- La Serie 2 mostrará los países que tienen entre 15 y 150 millones de habitantes.
- La Serie 3 mostrará los países que tienen más de 150 millones de habitantes.
Desde el Diseñador de página ingresamos a la Serie creada anteriormente para editarla:
Serie 1
- Nombre: Menor que 15 millones
- Consulta SQL:
SELECT NULL link, REGION_NAME label, HABITANTES value FROM SOUTH_AMERICA WHERE HABITANTES < 15000000
Creamos dos nuevas series:
Serie 2
- Nombre: Entre 15 y 150 millones
- Consulta SQL:
SELECT NULL link, REGION_NAME label, HABITANTES value FROM SOUTH_AMERICA WHERE HABITANTES BETWEEN 15000000 AND 150000000
Serie 3
- Nombre: Mayor que 150 millones
- Consulta SQL:
SELECT NULL link, REGION_NAME label, HABITANTES value FROM SOUTH_AMERICA WHERE HABITANTES > 150000000
Podemos definir los colores que queremos que muestre el mapa según el intervalo dado.
Para ello en Atributos del mapa nos dirigimos a la sección Colores de Región de Mapa Definida:
Esquema: Personalizado
Personalizado: #FF0000,#00FF00,#0000FF
Referencias: #FF0000 rojo, #00FF00 verde, #0000FF azul.
Además podemos mostrar la leyenda en nuestro mapa, desde atributos, en la sección Leyenda, seleccionamos:
- Mostrar: Derecha
- Título: Leyenda
- Orientación de Elemento: Vertical
- Origen de Elemento de Leyenda: Serie
De esta forma podemos trabajar fácilmente con los mapas que nos provee Apex con el componente AnyMap de AnyChart.