chore: 调整地图文字对象结构

This commit is contained in:
unanmed 2026-03-02 21:45:25 +08:00
parent 0b6cecda60
commit 838f33347d
2 changed files with 18 additions and 14 deletions

View File

@ -128,17 +128,17 @@ export class OnMapTextRenderer
const baseX = area.mapX * this.renderer.cellWidth; const baseX = area.mapX * this.renderer.cellWidth;
const baseY = area.mapY * this.renderer.cellHeight; const baseY = area.mapY * this.renderer.cellHeight;
for (const renderable of area.getRenderables()) { for (const renderable of area.getRenderables()) {
const x = baseX + renderable.px - renderWidth / 2; const x = baseX + (renderable.px ?? 0) - renderWidth / 2;
const y = renderHeight / 2 - (baseY + renderable.py); const y = renderHeight / 2 - (baseY + (renderable.py ?? 0));
ctx.font = renderable.font.string(); ctx.font = renderable.font.string();
ctx.textAlign = renderable.textAlign; ctx.textAlign = renderable.textAlign ?? 'left';
ctx.textBaseline = renderable.textBaseline; ctx.textBaseline = renderable.textBaseline ?? 'top';
if (renderable.strokeStyle) { if (renderable.stroke) {
ctx.strokeStyle = renderable.strokeStyle; ctx.strokeStyle = renderable.strokeStyle ?? 'black';
ctx.strokeText(renderable.text, x, -y); ctx.strokeText(renderable.text, x, -y);
} }
if (renderable.fillStyle) { if (renderable.fill) {
ctx.fillStyle = renderable.fillStyle; ctx.fillStyle = renderable.fillStyle ?? 'white';
ctx.fillText(renderable.text, x, -y); ctx.fillText(renderable.text, x, -y);
} }
} }

View File

@ -186,18 +186,22 @@ export interface IMapTextRenderable {
readonly text: string; readonly text: string;
/** 文本字体 */ /** 文本字体 */
readonly font: Font; readonly font: Font;
/** 是否填充 */
readonly fill?: boolean;
/** 是否描边 */
readonly stroke?: boolean;
/** 文本填充样式 */ /** 文本填充样式 */
readonly fillStyle: CanvasStyle; readonly fillStyle?: CanvasStyle;
/** 文本描边样式 */ /** 文本描边样式 */
readonly strokeStyle: CanvasStyle; readonly strokeStyle?: CanvasStyle;
/** 文本横坐标,注意 {@link IMapTextArea.addTextRenderable} 的相对关系 */ /** 文本横坐标,注意 {@link IMapTextArea.addTextRenderable} 的相对关系 */
readonly px: number; readonly px?: number;
/** 文本纵坐标,注意 {@link IMapTextArea.addTextRenderable} 的相对关系 */ /** 文本纵坐标,注意 {@link IMapTextArea.addTextRenderable} 的相对关系 */
readonly py: number; readonly py?: number;
/** 文本横向对齐方式 */ /** 文本横向对齐方式 */
readonly textAlign: CanvasTextAlign; readonly textAlign?: CanvasTextAlign;
/** 文本纵向对齐方式 */ /** 文本纵向对齐方式 */
readonly textBaseline: CanvasTextBaseline; readonly textBaseline?: CanvasTextBaseline;
} }
export interface IMapTextRequested { export interface IMapTextRequested {