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 clic 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.