feat(source): add join transfroms

This commit is contained in:
thinkinggis 2019-12-12 19:42:17 +08:00
parent 27a09a7a7a
commit ec3cae2f5f
4 changed files with 45 additions and 14 deletions

View File

@ -195,20 +195,20 @@ export default class PixelPickingPass<
feature: unknown; feature: unknown;
}) { }) {
const { onHover, onClick } = this.layer.getLayerConfig(); const { onHover, onClick } = this.layer.getLayerConfig();
if (onHover) { // if (onHover) {
onHover({ // onHover({
x, // x,
y, // y,
feature, // feature,
}); // });
} // }
if (onClick) { // if (onClick) {
onClick({ // onClick({
x, // x,
y, // y,
feature, // feature,
}); // });
} // }
this.layer.emit(type, { this.layer.emit(type, {
x, x,
y, y,

View File

@ -5,6 +5,7 @@
"main": "lib/index.js", "main": "lib/index.js",
"module": "es/index.js", "module": "es/index.js",
"types": "es/index.d.ts", "types": "es/index.d.ts",
"unpkg": "dist/l7.js",
"sideEffects": true, "sideEffects": true,
"files": [ "files": [
"dist", "dist",

View File

@ -9,6 +9,7 @@ import { cluster } from './transform/cluster';
import { filter } from './transform/filter'; import { filter } from './transform/filter';
import { aggregatorToGrid } from './transform/grid'; import { aggregatorToGrid } from './transform/grid';
import { pointToHexbin } from './transform/hexagon'; import { pointToHexbin } from './transform/hexagon';
import { join } from './transform/join';
import { map } from './transform/map'; import { map } from './transform/map';
export default Source; export default Source;
registerParser('geojson', geojson); registerParser('geojson', geojson);
@ -18,6 +19,7 @@ registerParser('json', json);
registerParser('raster', raster); registerParser('raster', raster);
registerTransform('cluster', cluster); registerTransform('cluster', cluster);
registerTransform('filter', filter); registerTransform('filter', filter);
registerTransform('join', join);
registerTransform('map', map); registerTransform('map', map);
registerTransform('grid', aggregatorToGrid); registerTransform('grid', aggregatorToGrid);
registerTransform('hexagon', pointToHexbin); registerTransform('hexagon', pointToHexbin);

View File

@ -0,0 +1,28 @@
import { IParseDataItem, IParserData } from '@antv/l7-core';
interface IJoinOption {
field: 'string';
data: any[];
}
/**
*
* @param data
* @param options
*/
export function join(geoData: IParserData, options: { [key: string]: any }) {
const { field, data } = options;
const dataObj: { [key: string]: any } = {};
data.forEach((element: { [key: string]: any }) => {
dataObj[element.field] = element;
});
geoData.dataArray = data.dataArray.map((item: IParseDataItem) => {
const joinName = item[field];
return {
...dataObj[joinName],
...item,
};
});
return data;
}