Angular Binding Multiple Data Sources

    No mapa Ignite UI for Angular, você pode adicionar múltiplos objetos de série geográfica para sobrepor fontes de dados personalizadas com dados geoespaciais. Por exemplo,IgxGeographicSymbolSeriesComponent para plotar localizações geográficas de aeroportos, oIgxGeographicPolylineSeriesComponent para plotar voos entre aeroportos, e 2ºIgxGeographicPolylineSeriesComponent para plotar linhas de grade das principais coordenadas geográficas.

    Angular Binding Multiple Data Sources Example

    Este tópico mostra passo a passo a exibição de várias séries geográficas que serão plotadas nos seguintes dados geoespaciais:

    Você pode usar séries geográficas nesta ou em outras combinações para plotar os dados desejados.

    Creating Data Sources

    Crie fontes de dados para todas as séries geográficas que você deseja exibir no mapa Ignite UI for Angular. Por exemplo, você pode usar o script WorldConnections.

    <div className="sampleRoot" >
        <igx-geographic-map #map
            width="700px"
            height="500px"
            zoomable="true" >
        </igx-geographic-map>
    </div>
    
    <ng-template let-series="series" let-item="item" #polylineTooltipTemplate>
            <div>
                <span>
                Arrival: {{item.origin.country}}
                </span>
                <br/>
                <span>
                Destination: {{item.dest.country}}
                </span>
                <br/>
                <span>
                Distance: {{item.distance}} miles
                </span>
            </div>
        </ng-template>
    
        <ng-template let-series="series" let-item="item" #pointTooltipTemplate>
                <div>
                    <span>
                    {{item?.country}}
                    </span>
                    <br />
                    <span>
                    {{item?.name}}
                    </span>
                    <br />
                    <span>
                    Population: {{item.pop}} M
                    </span>
                    <br/>
                    <span>
                    Flights: {{item.flights}}
                    </span>
                </div>
            </ng-template>
    

    Overlaying Flights

    Crie o primeiroIgxGeographicPolylineSeriesComponent objeto com conexões de voo entre aeroportos principais e adicione-o à coleção de Séries do mapa Ignite UI for Angular.

    <igx-geographic-polyline-series  #polylineSeries
            [tooltipTemplate]="polylineTooltipTemplate"
                    name="polylineSeries"
                    shapeMemberPath="points"
                    shapeStroke="rgba(147, 15, 180, 0.5)"
                    thickness={3.0} >
    </igx-geographic-polyline-series>
    

    Overlaying Gridlines

    Crie um segundoIgxGeographicPolylineSeriesComponent objeto com linhas de grade geográficas e adicione-o à coleção de Série do mapa Ignite UI for Angular.

      <igx-geographic-polyline-series  #polylineSeries
                [tooltipTemplate]="polylineTooltipTemplate"
                     datasource = worldFlights
                     name="polylineSeries"
                     shapeMemberPath="points"
                     shapeStroke="rgba(196, 14, 14,0.05)"
                     thickness={3.0} >
        </igx-geographic-polyline-series>
    

    Overlaying Airports

    CrieIgxGeographicSymbolSeriesComponent um objeto com pontos de aeroporto e adicione-o à coleção da Série do mapa geográfico Ignite UI for Angular.

    <igx-geographic-symbol-series  #symbolSeries
        name="symbolSeries"
        longitudeMemberPath="longitude"
        latitudeMemberPath="latitude"
        markerType="Circle"
        markerOutline="rgb(73, 73, 73)"
        markerBrush="White" >
    </igx-geographic-symbol-series>
    

    Summary

    Para sua conveniência, todos os trechos de código acima são combinados em um bloco de código abaixo que você pode copiar facilmente para seu projeto.

    import { AfterViewInit, Component, TemplateRef, ViewChild } from "@angular/core";
    import { MarkerType } from 'igniteui-angular-charts';
    import { IgxGeographicMapComponent } from 'igniteui-angular-maps';
    import { IgxGeographicPolylineSeriesComponent } from "igniteui-angular-maps";
    import { IgxGeographicSymbolSeriesComponent } from "igniteui-angular-maps";
    import { WorldConnections } from "../../utilities/WorldConnections";
    
    @Component({
      selector: "app-map-binding-multiple-data-sources",
      styleUrls: ["./map-binding-multiple-data-sources.component.scss"],
      templateUrl: "./map-binding-multiple--data-sources.component.html"
    })
    
    export class MapBindingMultipleSourcesComponent implements AfterViewInit {
    
        @ViewChild ("map")
        public map: IgxGeographicMapComponent;
    
        @ViewChild("polylineTooltipTemplate")
        public polylineTooltipTemplate: TemplateRef<object>;
    
        @ViewChild("pointTooltipTemplate")
        public pointTooltipTemplate: TemplateRef<object>;
    
        public data: any;
        constructor() {
        }
    
        public ngAfterViewInit(): void {
          this.map.windowRect = { left: 0.195, top: 0.1, width: 0.5, height: 0.5 };
    
          const worldFlights = WorldConnections.getFlights();
          const worldAirports = WorldConnections.getAirports();
          const worldGridlines = WorldConnections.getGridlines();
    
          this.addPolylineSeriesWith(worldFlights);
          this.addGridlineSeriesWith(worldGridlines);
          this.addSymbolSeriesWith(worldAirports);
        }
    
        public addGridlineSeriesWith(data: any[]) {
            const gridSeries = new IgxGeographicPolylineSeriesComponent();
            gridSeries.dataSource = data;
            gridSeries.shapeMemberPath = "points";
            gridSeries.shapeStroke = "Gray";
            gridSeries.shapeStrokeThickness = 1;
            this.map.series.add(gridSeries);
        }
    
        public addPolylineSeriesWith(data: any[]) {
            const lineSeries = new IgxGeographicPolylineSeriesComponent ();
            lineSeries.dataSource = data;
            lineSeries.shapeMemberPath = "points";
            lineSeries.shapeStroke = "rgba(196, 14, 14,0.05)";
            lineSeries.shapeStrokeThickness = 4;
            lineSeries.tooltipTemplate = this.polylineTooltipTemplate;
            this.map.series.add(lineSeries);
        }
    
        public addSymbolSeriesWith(data: any[]) {
            const symbolSeries = new IgxGeographicSymbolSeriesComponent ();
            symbolSeries.dataSource = data;
            symbolSeries.markerType = MarkerType.Circle;
            symbolSeries.latitudeMemberPath = "lat";
            symbolSeries.longitudeMemberPath = "lon";
            symbolSeries.markerBrush = "#aad3df";
            symbolSeries.markerOutline = "rgb(73, 73, 73)";
            symbolSeries.thickness = 1;
            symbolSeries.tooltipTemplate = this.pointTooltipTemplate;
            this.map.series.add(symbolSeries);
        }
    }
    

    API References