Drilldown in React Maps component

29 Aug 20239 minutes to read

By clicking a continent, all the countries available in that continent can be viewed using the drill-down feature. For example, the countries in the Africa continent have been showcased here. To showcase all the countries in Africa continent by clicking the shapeSelected event as mentioned in the following example.

import { world_map } from 'world-map.ts';
import { africa_continent } from 'africa-continent.ts';
import { dafaultData } from 'data.ts';
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import { MapsComponent, LayersDirective, LayerDirective, Inject, Highlight, Marker, MarkerDirective,MarkersDirective } from '@syncfusion/ej2-react-maps';
export function App() {
  let mapInstance;
  function shapeSelected(args) {
    let shape = args.shapeData.continent;
    if (mapInstance.baseLayerIndex === 0) {
      if (shape === 'Africa') {
        mapInstance.baseLayerIndex = 1;
        mapInstance.refresh();
      }
    }
  }
  return (
      <MapsComponent  height="400" ref={m => (mapInstance = m)}
                     shapeSelected={shapeSelected}>
        <Inject services={[Highlight, Marker]} />
        <LayersDirective>
          <LayerDirective shapeData={world_map} layerType="Geometry" shapeDataPath="continent" shapePropertyPath="continent" dataSource={dafaultData}
          shapeSettings={{
              colorValuePath: 'drillColor'
            }}>
            <MarkersDirective>
              <MarkerDirective visible={true}
                              template='<div style="font-size: 12px;color:white;text-shadow: 0px 1px 1px black;font-weight: 500;width:50px">Africa</div>'
                              dataSource={[
                                  { latitude: 10.97274101999902, longitude: 16.390625 }
                              ]}
                               animationDuration={0}/>
            </MarkersDirective>
          </LayerDirective>
          <LayerDirective layerType="Geometry" shapeData={africa_continent}
                          shapeSettings={{
                              fill: '#80306A'
                          }}
                          highlightSettings={{
                              enable: true,
                              fill: '#80306A'
                          }}
          />
        </LayersDirective>
      </MapsComponent>
    );
}
const root = ReactDOM.createRoot(document.getElementById('container'));
root.render(<App />);
import { world_map } from 'world-map.ts';
import { africa_continent } from 'africa-continent.ts';
import { dafaultData } from 'data.ts';
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import { MapsComponent, LayersDirective, LayerDirective, Inject, Highlight, Marker, MarkerDirective,MarkersDirective, IShapeSelectedEventArgs } from '@syncfusion/ej2-react-maps';
export function App() {
  let mapInstance : MapsComponent;
  function shapeSelected(args: IShapeSelectedEventArgs) {
    let shape = args.shapeData.continent;
    if (mapInstance.baseLayerIndex === 0) {
      if (shape === 'Africa') {
        mapInstance.baseLayerIndex = 1;
        mapInstance.refresh();
      }
    }
  }
  return (
      <MapsComponent  height="400" ref={m => (mapInstance = m)}
                     shapeSelected={shapeSelected}>
        <Inject services={[Highlight, Marker]} />
        <LayersDirective>
          <LayerDirective shapeData={world_map} layerType="Geometry" shapeDataPath="continent" shapePropertyPath="continent" dataSource={dafaultData}
          shapeSettings={{
              colorValuePath: 'drillColor'
            }}>
            <MarkersDirective>
              <MarkerDirective visible={true}
                              template='<div style="font-size: 12px;color:white;text-shadow: 0px 1px 1px black;font-weight: 500;width:50px">Africa</div>'
                              dataSource={[
                                  { latitude: 10.97274101999902, longitude: 16.390625 }
                              ]}
                               animationDuration={0}/>
            </MarkersDirective>
          </LayerDirective>
          <LayerDirective layerType="Geometry" shapeData={africa_continent}
                          shapeSettings={{
                              fill: '#80306A'
                          }}
                          highlightSettings={{
                              enable: true,
                              fill: '#80306A'
                          }}
          />
        </LayersDirective>
      </MapsComponent>
    );
}
const root = ReactDOM.createRoot(document.getElementById('container'));
root.render(<App />);