diff --git a/docs/api/district/drilldown.zh.md b/docs/api/district/drilldown.zh.md index 5ef21e3bc4..37b06f49f1 100644 --- a/docs/api/district/drilldown.zh.md +++ b/docs/api/district/drilldown.zh.md @@ -55,7 +55,35 @@ DrillDownLayer 提供默认提供通过 Layer 的交互事件,实现上钻下 ### joinBy 数据关联,属性数据如何内部空间数据关联绑定 目前支持 NAME_CHN,adcode 字段连接 -对照表 `Array [string, string]` 第一个值为空间数据字段,第二个为传入数据字段名 +对照表 `Array [string, string]` 第一个值为空间数据字段,第二个为传入数据字段名。 +- 主要使用场景 + + +```javascript + popup: { + enable: true, + Html: props => { // props 是我们拿到的数据 customValue 是我们的业务数据 + return `${props.customValue}`; + } + } + +``` +- 空间数据字段是 l7-district 内部自己定义的字段 NAME_CHN, adcode +- joinBy 第二个值是我们传入的数据中的字段 +```javascript + const data = [ + { + customValue: '34.5', // 自定义的值 + adcode: '330102', // 用于与空间数据字段对应 + }, + { + customValue: '52.6', + adcode: '330103', + }, + ... + ] + ``` + ### label diff --git a/packages/layers/src/utils/dataMappingStyle.ts b/packages/layers/src/utils/dataMappingStyle.ts index d266374923..3c03204db9 100644 --- a/packages/layers/src/utils/dataMappingStyle.ts +++ b/packages/layers/src/utils/dataMappingStyle.ts @@ -85,16 +85,17 @@ function handleStyleDataMapping(configToUpdate: IConfigToUpdate, layer: any) { */ function handleStyleFloat(fieldName: string, layer: ILayer, styleFloat: any) { if (isString(styleFloat)) { - // opacity = 'string' + // 如果传入的 styleFloat 是 string 类型,那么就认为其对应的是传入数据的字段 registerStyleAttribute(fieldName, layer, styleFloat, (value: any) => { return value; }); } else if (isNumber(styleFloat)) { - // opacity = 0.4 -> opacity 传入数字 + // 传入 number、默认值处理 registerStyleAttribute(fieldName, layer, [styleFloat], undefined); - } else if (isArray(styleFloat) && styleFloat.length === 2) { + } else if (isArray(styleFloat) && styleFloat.length === 2) { + // 传入的 styleFloat 是长度为 2 的数组 if (isString(styleFloat[0]) && isFunction(styleFloat[1])) { - // opacity = ['string', callback] + // 字段回调函数 [string, callback] registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]); } else if ( isString(styleFloat[0]) && @@ -102,12 +103,14 @@ function handleStyleFloat(fieldName: string, layer: ILayer, styleFloat: any) { isNumber(styleFloat[1][0]) && isNumber(styleFloat[1][1]) ) { - // opacity = ['string', [start: number, end: nuber]] + // 字段映射 [string, [start: number, end: number]] registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]); } else { + // 兼容 registerStyleAttribute(fieldName, layer, [1.0], undefined); } } else { + // 兼容 registerStyleAttribute(fieldName, layer, [1.0], undefined); } } @@ -123,7 +126,7 @@ function handleStyleOffsets( styleOffsets: any, ) { if (isString(styleOffsets)) { - // 字符串 + // 如果传入的 styleOffsets 是 string 类型,那么就认为其对应的是传入数据的字段 registerStyleAttribute(fieldName, layer, styleOffsets, (value: any) => { return value; }); @@ -133,7 +136,7 @@ function handleStyleOffsets( isString(styleOffsets[0]) && isFunction(styleOffsets[1]) ) { - // callback + // 字段回调函数 [string, callback] registerStyleAttribute(fieldName, layer, styleOffsets[0], styleOffsets[1]); } else if ( isArray(styleOffsets) && @@ -141,9 +144,10 @@ function handleStyleOffsets( isNumber(styleOffsets[0]) && isNumber(styleOffsets[1]) ) { - // normal + // 字段映射 [string, [start: number, end: number]] registerStyleAttribute(fieldName, layer, styleOffsets, undefined); } else { + // 兼容 registerStyleAttribute(fieldName, layer, [0, 0], undefined); } } @@ -156,20 +160,26 @@ function handleStyleOffsets( */ function handleStyleColor(fieldName: string, layer: ILayer, styleColor: any) { if (isString(styleColor)) { + // 如果传入的 styleColor 是 string 类型,那么就认为其是颜色值 registerStyleAttribute(fieldName, layer, styleColor, undefined); } else if (isArray(styleColor) && styleColor.length === 2) { + // 传入的 styleColor 是长度为 2 的数组 if (isString(styleColor[0]) && isFunction(styleColor[1])) { + // 字段回调函数 [string, callback] registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]); } else if ( isString(styleColor[0]) && isArray(styleColor[1]) && styleColor[1].length > 0 ) { + // 字段映射 [string, [start: string, end: string]] registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]); } else { + // 兼容 registerStyleAttribute(fieldName, layer, '#fff', undefined); } } else { + // 兼容 registerStyleAttribute(fieldName, layer, '#fff', undefined); } } diff --git a/stories/District/Layer/world.tsx b/stories/District/Layer/world.tsx index a24e6c6b17..a97a33c4bd 100644 --- a/stories/District/Layer/world.tsx +++ b/stories/District/Layer/world.tsx @@ -48,22 +48,22 @@ export default class Country extends React.Component { field: 'NAME_ENG', padding: [5, 5], }, - popup: { + popup: { // enable: true, enable: false, - Html: props => { + Html: (props) => { return `${props.NAME_CHN}`; }, }, }); - // console.time('layer'); - // Layer.on('loaded', () => { - // console.timeEnd('layer'); - // }); - console.log('======') + console.time('layer'); + Layer.on('loaded', () => { + console.timeEnd('layer'); + }); + console.log('======'); Layer.on('click', (e: any) => { // alert(e); - console.log(e) + console.log(e); // alert(1) }); }); diff --git a/stories/Map/components/amap2demo_lineHeight.tsx b/stories/Map/components/amap2demo_lineHeight.tsx index a3adbd5f6e..0774766c66 100644 --- a/stories/Map/components/amap2demo_lineHeight.tsx +++ b/stories/Map/components/amap2demo_lineHeight.tsx @@ -29,14 +29,13 @@ export default class Amap2demo_lineHeight extends React.Component { ) .then((res) => res.json()) .then((data) => { - - // let data = { - // "type": "FeatureCollection", - // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, - // "features": [ - // { "type": "Feature", "properties": { "ID": 29, "ELEV": 1520.0 }, "geometry": { "type": "LineString", "coordinates": [ [ 102.608042343554914, 23.123174402406956 ], [ 102.608042343554914, 23.12303965511434 ], [ 102.608042119163088, 23.123036986851119 ], [ 102.608031339379679, 23.122770160529104 ], [ 102.608031339379679, 23.122500665943868 ], [ 102.608042119163088, 23.122470722101063 ], [ 102.6082217822199, 23.122231171358631 ], [ 102.608311613748313, 23.122171283673023 ], [ 102.608580436277236, 23.122231171358631 ], [ 102.608581108333553, 23.122231416131189 ], [ 102.608737131514474, 23.122500665943868 ], [ 102.608737131514474, 23.122770160529104 ], [ 102.608850602918793, 23.12290490782172 ], [ 102.608958400752883, 23.12303965511434 ], [ 102.608958400752883, 23.123174402406956 ] ] } }, - // { "type": "Feature", "properties": { "ID": 30, "ELEV": 1530.0 }, "geometry": { "type": "LineString", "coordinates": [ [ 102.607834863512082, 23.123174402406956 ], [ 102.607834863512082, 23.12303965511434 ], [ 102.607923541545574, 23.122770160529104 ], [ 102.607923541545574, 23.122500665943868 ], [ 102.608012175320283, 23.122231171358631 ], [ 102.608042119163088, 23.122182172343134 ], [ 102.608311613748313, 23.122021564459004 ], [ 102.608581108333553, 23.122089399325638 ], [ 102.608703539025072, 23.122231171358631 ], [ 102.608850602918793, 23.122462166717405 ], [ 102.608877552377308, 23.122500665943868 ], [ 102.608877552377308, 23.122770160529104 ], [ 102.609093148045503, 23.12303965511434 ], [ 102.609093148045503, 23.123174402406956 ] ] } }, - // ] + // let data = { + // "type": "FeatureCollection", + // "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, + // "features": [ + // { "type": "Feature", "properties": { "ID": 29, "ELEV": 1520.0 }, "geometry": { "type": "LineString", "coordinates": [ [ 102.608042343554914, 23.123174402406956 ], [ 102.608042343554914, 23.12303965511434 ], [ 102.608042119163088, 23.123036986851119 ], [ 102.608031339379679, 23.122770160529104 ], [ 102.608031339379679, 23.122500665943868 ], [ 102.608042119163088, 23.122470722101063 ], [ 102.6082217822199, 23.122231171358631 ], [ 102.608311613748313, 23.122171283673023 ], [ 102.608580436277236, 23.122231171358631 ], [ 102.608581108333553, 23.122231416131189 ], [ 102.608737131514474, 23.122500665943868 ], [ 102.608737131514474, 23.122770160529104 ], [ 102.608850602918793, 23.12290490782172 ], [ 102.608958400752883, 23.12303965511434 ], [ 102.608958400752883, 23.123174402406956 ] ] } }, + // { "type": "Feature", "properties": { "ID": 30, "ELEV": 1530.0 }, "geometry": { "type": "LineString", "coordinates": [ [ 102.607834863512082, 23.123174402406956 ], [ 102.607834863512082, 23.12303965511434 ], [ 102.607923541545574, 23.122770160529104 ], [ 102.607923541545574, 23.122500665943868 ], [ 102.608012175320283, 23.122231171358631 ], [ 102.608042119163088, 23.122182172343134 ], [ 102.608311613748313, 23.122021564459004 ], [ 102.608581108333553, 23.122089399325638 ], [ 102.608703539025072, 23.122231171358631 ], [ 102.608850602918793, 23.122462166717405 ], [ 102.608877552377308, 23.122500665943868 ], [ 102.608877552377308, 23.122770160529104 ], [ 102.609093148045503, 23.12303965511434 ], [ 102.609093148045503, 23.123174402406956 ] ] } }, + // ] // } const layer = new LineLayer({}) .source(data) @@ -47,22 +46,22 @@ export default class Amap2demo_lineHeight extends React.Component { .scale('ELEV', { type: 'quantize', }) - .color('#f00') - // .color( - // 'ELEV', - // [ - // '#E4682F', - // '#FF8752', - // '#FFA783', - // '#FFBEA8', - // '#FFDCD6', - // '#EEF3FF', - // '#C8D7F5', - // '#A5C1FC', - // '#7FA7F9', - // '#5F8AE5', - // ].reverse(), - // ); + .color('#f00'); + // .color( + // 'ELEV', + // [ + // '#E4682F', + // '#FF8752', + // '#FFA783', + // '#FFBEA8', + // '#FFDCD6', + // '#EEF3FF', + // '#C8D7F5', + // '#A5C1FC', + // '#7FA7F9', + // '#5F8AE5', + // ].reverse(), + // ); scene.addLayer(layer); }); }); diff --git a/stories/Map/components/amap2demo_lineLinear.tsx b/stories/Map/components/amap2demo_lineLinear.tsx index d0bce2df14..8d348a2c16 100644 --- a/stories/Map/components/amap2demo_lineLinear.tsx +++ b/stories/Map/components/amap2demo_lineLinear.tsx @@ -1,4 +1,3 @@ - import { LineLayer, Scene } from '@antv/l7'; import { GaodeMap } from '@antv/l7-maps'; import * as React from 'react'; diff --git a/stories/Map/components/amap2demo_markerPopup.tsx b/stories/Map/components/amap2demo_markerPopup.tsx index 8b05eadefe..163b0107ba 100644 --- a/stories/Map/components/amap2demo_markerPopup.tsx +++ b/stories/Map/components/amap2demo_markerPopup.tsx @@ -3,45 +3,54 @@ import { MarkerLayer, Scene } from '@antv/l7'; import { AMapScene, Marker, Popup } from '@antv/l7-react'; import { GaodeMap } from '@antv/l7-maps'; import * as React from 'react'; -import {useState} from 'react' +import { useState } from 'react'; const Amap2demo_markerPopup = () => { - const [showPopup , setShowPopup] = useState(false) + const [showPopup, setShowPopup] = useState(false); return ( - { - console.log(marker.getElement().children[0].children[0]) - marker.getElement().children[0].children[0].addEventListener('mouseenter', (e) => { - setShowPopup(true) - }) - marker.getElement().children[0].children[0].addEventListener('mouseout', (e) => { - setShowPopup(false) - }); + map={{ + center: [114, 32], + pitch: 0, + style: 'dark', + zoom: 6, }} - /> - {showPopup && - 这是个信息框 - } - + style={{ + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + }} + > + { + console.log(marker.getElement().children[0].children[0]); + marker + .getElement() + .children[0].children[0].addEventListener('mouseenter', (e) => { + setShowPopup(true); + }); + marker + .getElement() + .children[0].children[0].addEventListener('mouseout', (e) => { + setShowPopup(false); + }); + }} + /> + {showPopup && ( + + 这是个信息框 + + )} + ); -} -export default Amap2demo_markerPopup +}; +export default Amap2demo_markerPopup;