Integrating JavaScript map chart with APEX

This document talks about how to Integrate APEX with JavaScript map chart.

 

Technologies and Tools used:

The following technologies has been used to Integrating JavaScript map chart with APEX.

  • Oracle Apex
  • JavaScript

 

Use Case:

Assume that there is a requirement to display map from available data.

 

Architecture:

Following steps explains in detail,

  • Create an Oracle Apex Application and go to Shared Components => Files => Static Files, then upload necessary JavaScript files as shown below,

map-chart-static-files

  • Create a Region and set type as  “Static Content”

 

  • <div id = “container”

    style = “height: 500px; min-width: 310px; max-width: 800px; margin: 0 auto” > < /div> <script >

    var data = Corp.geojson(Corp.maps[‘countries/in/in-all’]), //To call parent map data.js file example India

    Map india.map_

    separators = Corp.geojson(Corp.maps[‘countries/in/in-all’], ‘mapline’),

    // Some responsiveness

    small = $(‘#container’).width() < 400;

    // Set drilldown pointers

    $.each(data, function(i) {

    this.drilldown = this.properties[‘hc-a2’];

    this.value = i; // Non-random bogus data

    });

    // Instantiate the map

    Corp.mapChart(‘container’, {

    chart: {

    events: {

    drilldown: function(e) {

    if (!e.seriesOptions) {

    var chart = this,

    mapKey = ‘countries/in/in-‘ + e.point.drilldown,

    // Handle error, the timeout is cleared on success

    fail = setTimeout(function() {

    if (!Corp.maps[mapKey]) {

    chart.showLoading(‘<i class=”icon-frown”></i> Failed loading ‘ + e.point.name);

    fail = setTimeout(function() {

    chart.hideLoading();

    }, 1000);

    }

    }, 3000);

    // Show the spinner

    chart.showLoading(‘<i class=”icon-spinner icon-spin icon-3x”></i>’); // Font Awesome spinner

    //alert(e.point.drilldown);

    // Load the drilldown map

    //$.getScript(‘https://code.highcharts.com/mapdata/’ + mapKey + ‘.js’, function () {

    $.getScript(‘#APP_IMAGES#’ + e.point.drilldown + ‘.map.js’, function() {

    // To call child map data for example Tamilnadu map will be displayed by clicking India

    . tn.map_

    data = Corp.geojson(Corp.maps[mapKey]);

    // Set a non-random bogus value

    $.each(data, function(i) {

    this.value = i;

    });

    // Hide loading and add series

    chart.hideLoading();

    clearTimeout(fail);

    chart.addSeriesAsDrilldown(e.point, {

    name: e.point.name,

    data: data,

    dataLabels: {

    enabled: true,

    format: ‘{point.StateCode}’

    }

    });

    });

    }

    this.setTitle(null, {

    text: e.point.name

    });

    },

    drillup: function() {

    this.setTitle(null, {

    text: ”

    });

    }

    }

    },

    title: {

    text: ‘India Map’

    },

    subtitle: {

    text: ”,

    floating: true,

    align: ‘right’,

    y: 50,

    style: {

    fontSize: ’16px’

    }

    },

    legend: small ? {} : {

    layout: ‘vertical’,

    align: ‘right’,

    verticalAlign: ‘middle’

    },

    colorAxis: {

    min: 0,

    minColor: ‘#E6E7E8’,

    maxColor: ‘#005645’

    },

    mapNavigation: {

    enabled: true,

    buttonOptions: {

    verticalAlign: ‘bottom’

    }

    },

    plotOptions: {

    map: {

    states: {

    hover: {

    color: ‘#EEDD66’

    }

    }

    }

    },

    series: [{

    data: data,

    name: ‘India’,

    dataLabels: {

    enabled: true,

    format: ‘{point.properties.postal-code}’

    }

    }, {

    type: ‘mapline’,

    data: separators,

    color: ‘silver’,

    enableMouseTracking: false,

    animation: {

    duration: 500

    }

    }],

    drilldown: {

    activeDataLabelStyle: {

    color: ‘#FFFFFF’,

    textDecoration: ‘none’,

    textOutline: ‘1px #000000’

    },

    drillUpButton: {

    relativeTo: ‘spacingBox’,

    position: {

    x: 0,

    y: 60

    }

    }

    }

    });

    </script>

Sample exported support files:

<script src = “#APP_IMAGES#min.js” > < /script>

< script src = “#APP_IMAGES#corp.map.js” > < /script>

< script src = “#APP_IMAGES#drilldown.js” > < /script>

<  script src = “#APP_IMAGES#exporting.js” > < /script>

< script src = “#APP_IMAGES#offline.exporting.js” > < /script>

<script src = “#APP_IMAGES#india.map.js” > < /script>

<script src = “#APP_IMAGES#corp.src.js” > < /script>

 

Note : If there is any requirement to display the world map or district level for any state, Download the geometric polygon/Multi-polygon co-ordinates and follow the steps given above.

 

Output:

Now India map has been displayed.

 

 

Recent Posts

Start typing and press Enter to search