Maps 地图
GeoJSON 地图:气泡图与分级填色图,Mercator 默认投影,缩放平移。
Maps 地图
基础用法
两个地图组件都吃一份 FeatureCollection GeoJSON(包不内置地理数据,调用方自带),默认投影是纬度钳制在 ±85.05° 的 Mercator,显示窗裁掉两极空白让陆地铺满容器。容器高度默认按投影窗口的宽高比自适应,传 height 可固定像素高。数据用 accessor 模式取值:key 或 (row) => value 都行。
气泡图
BubbleMap + roam
气泡面积正比于值;开了 roam 可滚轮缩放、拖拽平移。
分级填色图
ChoroplethMap + 图例
连续色阶按值插值;无数据地区保持陆地底色。
投影与缩放
projection 接 d3-geo 投影实例(如 geoNaturalEarth1()),null 退化为裸经纬度(equirectangular)。实例会被原地 fitExtent,务必传稳定引用。zoom(默认 1.25)是自适应缩放的倍率;roam 开启滚轮缩放 + 拖拽平移,缩放范围被限制在 [min(1, zoom), zoom × 8],气泡与描边在缩放下保持恒定像素尺寸。
分级色阶
分级填色是连续插值:值归一化后落在 --tx-chart-map-scale-1..5 相邻两档之间,用 CSS color-mix(in oklab, …) 混合——明暗主题切换时色阶自动翻转,JS 不做任何颜色解析。colorRange 可换整套色阶,min/max 可固定标尺范围。
API
共同 Props(两个组件)
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
geoJson | MapGeoJson | — | FeatureCollection,调用方提供。 |
center | [lng, lat] | 自适应 | 地图中心。 |
zoom | number | 1.25 | 自适应缩放倍率。 |
roam | boolean | false | 滚轮缩放 + 拖拽平移。 |
projection | GeoProjection | null | 钳制 Mercator | d3-geo 投影;null 为裸经纬度。 |
showTooltip | boolean | true | 悬停提示框。 |
valueFormat | (v: number) => string | toLocaleString | 默认 tooltip 的数值格式。 |
aspectRatio | number | string | 投影窗口比 | 容器宽高比。 |
height | number | — | 固定像素高,优先于 aspectRatio。 |
width | number | 容器实测 | 显式宽度(SSR/测试用)。 |
BubbleMap 专有
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
data / lng / lat / value / name? | accessor | — | 数据行与取值器。 |
minRadius / maxRadius | number | 6 / 26 | 气泡半径区间(面积正比于值,sqrt 缩放)。 |
bubbleSize | (v: number) => number | — | 显式半径,覆盖 min/max 缩放。 |
bubbleColor | MapStyle<T, string> | 图表蓝 | 常量或 (row) => color。 |
bubbleBorderColor / bubbleBorderWidth | MapStyle | 'transparent' / 0 | 描边。 |
BubbleMap 事件:bubble-hover(row \| undefined)、bubble-click(row);插槽 tooltip(作用域 { row })。
ChoroplethMap 专有
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
data / name / value | accessor | — | 数据行;name 与 feature 的 nameProperty 连接。 |
nameProperty | string | 'name' | 连接用的 feature 属性;真实数据常用 ISO 码更稳。 |
colorRange | string[] | 主题色阶 | 低→高的连续色阶。 |
min / max | number | 数据极值 | 标尺范围。 |
noDataColor | string | 陆地底色 | 无匹配数据的地区填充。 |
showLegend | boolean | false | 渐变图例条。 |
ChoroplethMap 事件:region-hover(row \| undefined)、region-click(row)(都只对有数据的地区触发);插槽 tooltip(作用域 { row, regionName, value })。
与 kumo 的差异
projection直接接 d3-geo 实例(kumo 是{ project, unproject }包装给 echarts 用);null实现为 equirectangular。- 缩放实现为 SVG transform,气泡/描边按缩放系数反缩,视觉尺寸恒定。
tooltipFormatter(HTML 字符串)→tooltip插槽。