mirror of https://gitee.com/antv-l7/antv-l7
fix: source data join 功能&文档
This commit is contained in:
parent
d384494cc9
commit
fd494b48f8
|
@ -128,7 +128,60 @@ layer.source(data, {
|
||||||
|
|
||||||
生成六边形网格布局,根据数据字段统计
|
生成六边形网格布局,根据数据字段统计
|
||||||
|
|
||||||
- type: 'hexagon',
|
- type: hexagon,
|
||||||
- size: 网格半径
|
- size: 网格半径
|
||||||
- field: 数据统计字段
|
- field: 数据统计字段
|
||||||
- method: 聚合方法 count,max,min,sum,mean 5 个统计维度
|
- method: 聚合方法 count,max,min,sum,mean 5 个统计维度
|
||||||
|
|
||||||
|
#### join
|
||||||
|
|
||||||
|
数据连接,业务中跟多情况是地理数据和业务数据分开的两套数据,我们可与通过 join 方法将地理数据和业务数据进行关联。
|
||||||
|
|
||||||
|
**配置项**
|
||||||
|
|
||||||
|
- type: join
|
||||||
|
- sourceField 需要连接的业务数据字段名称
|
||||||
|
- data 需要连接的数据源 仅支持 json 格式
|
||||||
|
- targetField 关联的地理数据字段名称
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const data = {
|
||||||
|
"type": "FeatureCollection",
|
||||||
|
"features": [
|
||||||
|
{
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": {
|
||||||
|
"city":'北京'
|
||||||
|
},
|
||||||
|
"geometry": {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const data2 = [
|
||||||
|
{
|
||||||
|
name:'北京',
|
||||||
|
value: 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'天津',
|
||||||
|
value: 20
|
||||||
|
}
|
||||||
|
]
|
||||||
|
// data 是地理数据
|
||||||
|
// data2 属性数据或者业务数据
|
||||||
|
|
||||||
|
// 通过join方法我们就可以将两个数据连接到一起
|
||||||
|
|
||||||
|
layer.source(data,{
|
||||||
|
transforms:[
|
||||||
|
type: 'join'
|
||||||
|
sourceField: 'name' //data1 对应字段名
|
||||||
|
targetField: 'city' // data 对应字段名
|
||||||
|
data: data2,
|
||||||
|
]
|
||||||
|
})
|
||||||
|
.color('value') // 可以采用data1的value字段进行数据到颜色的映射
|
||||||
|
```
|
||||||
|
|
|
@ -134,3 +134,56 @@ layer.source(data, {
|
||||||
- size: 网格半径
|
- size: 网格半径
|
||||||
- field: 数据统计字段
|
- field: 数据统计字段
|
||||||
- method:聚合方法 count,max,min,sum,mean 5 个统计维度
|
- method:聚合方法 count,max,min,sum,mean 5 个统计维度
|
||||||
|
|
||||||
|
#### join
|
||||||
|
|
||||||
|
数据连接,业务中跟多情况是地理数据和业务数据分开的两套数据,我们可与通过 join 方法将地理数据和业务数据进行关联。
|
||||||
|
|
||||||
|
**配置项**
|
||||||
|
|
||||||
|
- type: join
|
||||||
|
- sourceField 需要连接的业务数据字段名称
|
||||||
|
- data 需要连接的数据源 仅支持 json 格式
|
||||||
|
- targetField 关联的地理数据字段名称
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const data = {
|
||||||
|
"type": "FeatureCollection",
|
||||||
|
"features": [
|
||||||
|
{
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": {
|
||||||
|
"city":'北京'
|
||||||
|
},
|
||||||
|
"geometry": {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const data2 = [
|
||||||
|
{
|
||||||
|
name:'北京',
|
||||||
|
value: 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'天津',
|
||||||
|
value: 20
|
||||||
|
}
|
||||||
|
]
|
||||||
|
// data 是地理数据
|
||||||
|
// data2 属性数据或者业务数据
|
||||||
|
|
||||||
|
// 通过join方法我们就可以将两个数据连接到一起
|
||||||
|
|
||||||
|
layer.source(data,{
|
||||||
|
transforms:[
|
||||||
|
type: 'join'
|
||||||
|
sourceField: 'name' //data1 对应字段名
|
||||||
|
targetField: 'city' // data 对应字段名
|
||||||
|
data: data2,
|
||||||
|
]
|
||||||
|
})
|
||||||
|
.color('value') // 可以采用data1的value字段进行数据到颜色的映射
|
||||||
|
```
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import { IParseDataItem, IParserData } from '@antv/l7-core';
|
import { IParseDataItem, IParserData } from '@antv/l7-core';
|
||||||
|
|
||||||
interface IJoinOption {
|
interface IJoinOption {
|
||||||
field: 'string';
|
sourceField: string;
|
||||||
|
targetField: string;
|
||||||
data: any[];
|
data: any[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,19 +11,19 @@ interface IJoinOption {
|
||||||
* @param data
|
* @param data
|
||||||
* @param options
|
* @param options
|
||||||
*/
|
*/
|
||||||
export function join(geoData: IParserData, options: { [key: string]: any }) {
|
export function join(geoData: IParserData, options: IJoinOption) {
|
||||||
const { field, data } = options;
|
const { sourceField, targetField, data } = options;
|
||||||
const dataObj: { [key: string]: any } = {};
|
const dataObj: { [key: string]: any } = {};
|
||||||
data.forEach((element: { [key: string]: any }) => {
|
data.forEach((element: { [key: string]: any }) => {
|
||||||
dataObj[element[field]] = element;
|
dataObj[element[sourceField]] = element;
|
||||||
});
|
});
|
||||||
geoData.dataArray = data.dataArray.map((item: IParseDataItem) => {
|
geoData.dataArray = geoData.dataArray.map((item: IParseDataItem) => {
|
||||||
const joinName = item[field];
|
const joinName = item[targetField];
|
||||||
return {
|
return {
|
||||||
...dataObj[joinName],
|
...dataObj[joinName],
|
||||||
...item,
|
...item,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return geoData;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue