Angular Displaying Heat Imagery
Ignite UI for Angular 다음을 사용하여 열 지도 이미지를 표시하는 기능이 있습니다. ShapeFileRecord
에 의해 생성됨 IgxShapeDataSource
타일 시리즈에 모양 파일을 로드하여 지리 공간 데이터를 로드합니다.
이 항목의 전제 조건으로 지리 공간 데이터로 모양 파일 바인딩 항목을 검토하는 것이 좋습니다.
Angular 열 이미지 표시 예
이 샘플이 마음에 드시나요? 전체 Ignite UI for Angular 툴킷에 액세스하고 몇 분 안에 나만의 앱을 구축해 보세요. 무료로 다운로드하세요.
때 IgxShapeDataSource
모양 파일을 로드하면 해당 데이터를 IgxShapefileRecord
개체. 이러한 객체는 GetPointData()
메서드의 IgxShapeDataSource
그런 다음 를 사용하여 히트 맵을 만드는 데 사용할 수 있습니다. IgxTileGeneratorMapImagery
객체를 IgxHeatTileGenerator
에 할당됨 TileGenerator
재산. 이 IgxTileGeneratorMapImagery
그런 다음 에서 사용할 수 있습니다. IgxGeographicTileSeriesComponent
그것의 tileImagery
근원.
IgxHeatTileGenerator
객체는 xValues
, yValues
및 values
의 세 가지 값 경로를 갖도록 작동합니다. 이를 어떻게 사용할 수 있는지에 대한 예로, 인구에 대한 정보가 있는 모양 파일의 경우 xValues
경도로, yValues
위도로, values
인구 데이터로 간주할 수 있습니다. 이러한 각 속성은 number[]
사용합니다.
히트맵 기능을 사용할 때 지리 타일 시리즈의 표시는 다음을 설정하여 사용자 정의할 수 있습니다. minimumColor
그리고 maximumColor
속성을 컬렉션에 할당하는 컬렉션의 최소 및 최대 값에 해당하는 색상을 설명하는 "rgba" 문자열에 추가합니다. values
의 재산 HeatTileGenerator.
다음을 설정하여 이를 추가로 사용자 정의할 수 있습니다. ScaleColors
색상을 설명하는 문자열 모음을 포함하는 생성기의 속성입니다. IgxHeatTileGenerator
지도에 표시된 값에 사용할 색상입니다. 색상을 사용자 정의하는 것도 가능합니다. ScaleColors
컬렉션을 사용하여 함께 흐리게 처리합니다. blurRadius
, maxBlurRadius
, 그리고 useBlurRadiusAdjustedForZoom
속성.
IgxHeatTileGenerator
는 로그 스케일을 사용할 수도 있습니다. 이를 사용하려면 useLogarithmicScale
속성을 true로 설정하면 됩니다.
웹 작업자
IgxHeatTileGenerator
는 또한 웹 작업자가 별도의 스레드에서 모양 파일의 타일 이미지를 로드하는 무거운 작업을 수행할 수 있도록 지원합니다. 이는 히트맵 기능을 사용할 때 지리적 지도의 성능을 크게 향상시킬 수 있습니다. 생성기와 함께 웹 작업자를 사용하려면 useWebWorkers
속성을 true로 설정한 다음 webWorkerInstance
속성을 웹 작업자의 인스턴스로 설정하면 됩니다.
// heatworker.worker.ts
import { HeatTileGeneratorWebWorker } from 'igniteui-angular-core';
const worker: Worker = self as any;
worker.onmessage = HeatTileGeneratorWebWorker.onmessage;
HeatTileGeneratorWebWorker.postmessage = heatWorkerPostMessage;
function heatWorkerPostMessage() {
(self as any).postMessage.apply(self, Array.prototype.slice.call(arguments));
}
HeatTileGeneratorWebWorker.start();
export default {} as typeof Worker & (new () => Worker);
ts
종속성
import { IgxHeatTileGenerator } from 'igniteui-angular-core';
import { IgxShapeDataSource } from 'igniteui-angular-core';
import { IgxGeographicMapComponent } from 'igniteui-angular-maps';
import { IgxTileGeneratorMapImagery } from 'igniteui-angular-maps';
ts
히트맵 생성
다음 코드 조각은 Ignite UI for Angular에서 인구 기반 히트 맵을 표시하는 방법을 보여줍니다.
<igx-geographic-map #map width="100%" height="calc(100% - 60px)">
<igx-geographic-tile-series name="heatTiles" [tileImagery]="tileImagery"></igx-geographic-tile-series>
</igx-geographic-map>
html
@ViewChild("map", { static: true })
public map: IgxGeographicMapComponent;
public data: any[];
public tileImagery: IgxTileGeneratorMapImagery;
// ...
constructor() {
this.data = this.initData();
this.tileImagery = new IgxTileGeneratorMapImagery();
const con: IgxShapeDataSource = new IgxShapeDataSource();
con.importCompleted.subscribe((s, e) => {
const data = con.getPointData();
const lat: number[] = [];
const lon: number[] = [];
const val: number[] = [];
for (let i = 0; i < data.length; i++) {
const item = data[i];
for (let j = 0; j < item.points.length; j++) {
const pointsList = item.points[j];
for (let k = 0; k < pointsList.length; k++) {
lat.push(pointsList[k].y);
lon.push(pointsList[k].x);
}
}
const value = item.fieldValues["POP_2010"];
if (value >= 0) {
val.push(value);
} else {
val.push(0);
}
}
const gen = new IgxHeatTileGenerator();
gen.xValues = lon;
gen.yValues = lat;
gen.values = val;
gen.blurRadius = 6;
gen.maxBlurRadius = 20;
gen.useBlurRadiusAdjustedForZoom = true;
gen.minimumColor = "rgba(100,255, 0, 0.3922)";
gen.maximumColor = "rgba(255, 255, 0, 0.9412)";
gen.useGlobalMinMax = true;
gen.useGlobalMinMaxAdjustedForZoom = true;
gen.useLogarithmicScale = true;
gen.useWebWorkers = true;
gen.webWorkerInstance = new Worker("../heatworker.worker", { type: "module" });
gen.scaleColors = [
"rgba(0, 0, 255, 64)",
"rgba(0, 255, 255, 96)",
"rgba(0, 255, 0, 160)",
"rgba(255, 255, 0, 180)",
"rgba(255, 0, 0, 200)"
];
this.tileImagery.tileGenerator = gen;
});
con.shapefileSource = "assets/Shapes/AmericanCities.shp";
con.databaseSource = "assets/Shapes/AmericanCities.dbf";
con.dataBind();
}
ts
API 참조
IgxGeographicTileSeriesComponent
IgxHeatTileGenerator
maximumColor
minimumColor
IgxShapefileRecord
IgxShapeDataSource
IgxTileGeneratorMapImagery
tileGenerator
tileImagery
useBlurRadiusAdjustedForZoom
useLogarithmicScale