Skip to content

xCharts 地图 opts.extra.map

以下是在 xCharts 中配置地图 opts.extra.map 的属性列表:

属性名类型默认值说明
borderBooleantrue是否绘制区域分割线
mercatorBooleanfalse是否进行 WGS84 转墨卡托投影
borderWidthNumber2分割线宽度
borderColorColor#666666分割线颜色
fillOpacityNumber0.6区域内填充透明度
activeBooleantrue是否启用点击激活变色
activeTextColorColor#FFFFFF点击激活时文字颜色
activeBorderColorColor#F04864点击激活时分割线颜色
activeFillColorColor#FACC14点击激活时填充颜色
activeFillOpacityNumber1点击激活时填充透明度

新版项目中的实际写法

xcharts/map/map.uvue:12 同样默认走接口加载示例数据,但地图是最典型的“大体量本地配置”场景,因为 xcharts/map/index.uts 中包含大量 GeoJSON 坐标数据。

所以这里更应该在文档里明确说明:

  • 地图能力本身支持本地配置
  • 示例页走接口只是因为地图坐标数据非常大,直接长期放在演示工程里会明显增加包体和编译内存压力
  • 文档里可以节选结构说明,不必把整份坐标数据全部展开

本地配置示例

xcharts/map/index.uts:1 的地图示例本质结构如下:

ts
export default [
	{
		name: '地图',
		option: {
			animation: true,
			dataLabel: true,
			extra: {
				map: {
					activeBorderColor: '#F04864',
					activeFillColor: '#FACC14',
					activeFillOpacity: 1,
					border: true,
					borderColor: '#666666',
					borderWidth: 1,
					fillOpacity: 0.6
				},
				tooltip: {}
			},
			series: [
				{
					geometry: {
						type: 'Feature',
						coordinates: [/* 大量 GeoJSON 坐标数据 */]
					},
					name: '区域名称'
				}
			],
			type: 'map'
		}
	}
]

文档里建议重点说明结构,而不是把几万行坐标全部贴出来。

页面初始化示例

ts
import opts from './index.uts'

function initFinished(e : ITuiCharts) {
	charts = e
	opts.forEach((item : UTSJSONObject, index : number) => {
		const chart = e.add(index, item.getJSON('option')!)
		chart.setCoordinates({ height: 287, xOffset: 0, yOffset: itemH * index })
		chart.draw()
	})
}

常见用法归纳

结合 xcharts/map/index.uts,地图图表主要覆盖这些能力:

  • 区域边界绘制
  • 点击激活高亮
  • 区域填充透明度控制
  • GeoJSON 区域数据渲染

核心配置主要集中在:

  • extra.map.border
  • extra.map.fillOpacity
  • extra.map.active*
  • series[].geometry
  • mercator

动态更新示例

xcharts/map/map.uvue:33 里保留了统一的 update 演示结构,但地图类图表在实际业务里更常见的是:

  • 切换整份区域数据
  • 更新某些区域的颜色与激活状态
  • 切换不同地图层级

如果地图数据体积很大,推荐像示例工程一样把数据放在接口侧,文档则专注讲清配置结构和字段含义。