Skip to content

fix: getMarker() がテンプレートを当てた POI を返すようにする - #161

Merged
kochizufan merged 2 commits into
masterfrom
fix/get-marker-apply-templates
Nov 6, 2026
Merged

kochizufan merged 2 commits into
masterfrom
fix/get-marker-apply-templates

Conversation

@kochizufan

@kochizufan kochizufan commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

症状

poiTemplate で本文を作る POI は、地図上のマーカーを押したとき(clickMarker)だけテンプレートが当たり、@maplat/ui の openMarker()・マーカー一覧・状態 URL(om:)から開くと本文が空になっていた。この 3 つの開き方は getMarker(id) で POI を引くが、getMarker は格納しているデータをそのまま返していた。

直し方

  • テンプレートを当てる処理を 1 つの関数(applyPoiTemplates)にし、マーカーの描画と getMarker の両方がそれを通る。createIconSet・createHtmlFromTemplate の呼び手はこの関数だけになった
  • getMarker は clickMarker の detail と同じ形の複製を返す。格納している POI には html を焼き付けないので、updateMarker などで値が変わっても呼ぶたびに評価し直す
  • updateMarker は格納している POI を直接書き換える(getMarker の戻り値には依存しない)
  • POI を実体・層・祖先で引く関数 findPoiEntry はモジュールの関数で、MaplatApp のメソッドは増えない
  • @maplat/ui は変更不要(3 つの開き方は既に getMarker に集まっている)

契約の JSDoc(getMarker・MaplatPoi)、docs/api/maplat-app.md・.ja.md、CHANGELOG の Fixed を更新。dist は別 commit。

試験

  • spec/get-marker-template.spec.ts(新規): アプリの層・地図の層でのテンプレート適用、実体に html が付かないこと、iconTemplate・icon の優先、POI 自身の html、updateMarker 後の再評価、旧い記法の警告が 1 回、selectMarker、無い id
  • マーカー再描画の既存の spec: 描画された地物の datum と getMarker の戻り値が deep-equal(アプリの層・地図の層)

Closes #150

🤖 Generated with Claude Code

kochizufan and others added 2 commits November 7, 2026 03:42
マーカーの描画と getMarker が、祖先の poiTemplate・iconTemplate を当てる
同じ 1 つの関数を通るようにした。getMarker は clickMarker の detail と同じ形の
複製を返し、格納している POI には html を焼き付けない。updateMarker は
格納している POI を直接書き換える。

Closes #150

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kochizufan
kochizufan marked this pull request as ready for review November 6, 2026 18:59
@kochizufan
kochizufan merged commit e9a7f48 into master Nov 6, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

テンプレートで作る POI を openMarker()・マーカー一覧・状態 URL で開くとテンプレートが当たらない

1 participant