diff --git a/packages/vchart/src/component/tooltip/utils/show-tooltip.ts b/packages/vchart/src/component/tooltip/utils/show-tooltip.ts index afab7ae2a5..03c86f0254 100644 --- a/packages/vchart/src/component/tooltip/utils/show-tooltip.ts +++ b/packages/vchart/src/component/tooltip/utils/show-tooltip.ts @@ -273,28 +273,43 @@ export const getMarkInfoList = (datum: Datum, region: IRegion) => { }; const parseMarkInfoOfGeoSeries = () => { + console.log('parseMarkInfoOfGeoSeries'); + let originDatum = series.getViewData()?.latestData.find(datumContainsArray(dimensionFields, dimensionData)); // 地图需要特殊处理,需要根据properties属性来匹配数据 - const originDatum = series + // @ts-ignore + const nameMap = series.getNameMap(); + + const originMapDatum = series // @ts-ignore .getMapViewData?.() ?.latestData.find((datum: Datum) => - dimensionFields.every((key, i) => datum.properties[key] === dimensionData?.[i]) + dimensionFields.every((key, i) => { + if (key === 'name') { + return nameMap[datum.properties[key]] === dimensionData?.[i]; + } + return datum.properties[key] === dimensionData?.[i]; + }) ); + if (!originMapDatum) { + return; + } let markInfoMeasureData = measureData; + if (originMapDatum && !originDatum) { + originDatum = { ...datum }; + } if (!hasMeasureData) { - // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据 + // 如果只有地图数据,则补全 measureData = getDataArrayFromFieldArray(measureFields, originDatum); markInfoMeasureData = measureData; if (!hasData(measureData) && !originDatum) { return; } - measureData = { ...originDatum.properties }; + if (!hasData(measureData)) { + measureData = [null]; + } } - const pos = - series.type === SeriesTypeEnum.pie - ? (series as PieSeries).dataToCentralPosition(originDatum.properties) - : series.dataToPosition(originDatum.properties); + const pos = series.dataToPosition(originDatum); if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) { return; }