Skip to content

fix: マップ移動時にマーカーの吹き出しが消えないように修正#11

Merged
TinyKitten merged 3 commits intomainfrom
claude/fix-map-popup-persistence-CExpP
Feb 11, 2026
Merged

fix: マップ移動時にマーカーの吹き出しが消えないように修正#11
TinyKitten merged 3 commits intomainfrom
claude/fix-map-popup-persistence-CExpP

Conversation

@TinyKitten
Copy link
Copy Markdown
Member

@TinyKitten TinyKitten commented Feb 11, 2026

マーカーをタップして表示された吹き出し(callout)が、マップのパン・ズーム操作時に
自動的に消えてしまう問題を修正。onRegionChangeComplete で選択中のマーカーの
showCallout() を再呼び出しすることで、ユーザーが明示的に閉じるまで吹き出しを
表示し続けるようにした。

吹き出しの明示的な解除方法:

  • マップの背景をタップ
  • 吹き出し自体をタップ
  • 別のマーカーをタップ(切り替え)

https://claude.ai/code/session_01TuXxMDD3bmhRDQ5QN2NYxi

Summary by CodeRabbit

  • 新機能
    • マップ上のマーカー選択・操作を強化しました。
    • マーカーをタップして選択し、詳細情報(コールアウト)を表示できます。
    • マップ背景をタップすると現在の選択が解除されます。
    • コールアウトをタップして閉じられるようになりました。
    • 地図の移動後も選択中のマーカーの詳細が自動的に再表示されます。

マーカーをタップして表示された吹き出し(callout)が、マップのパン・ズーム操作時に
自動的に消えてしまう問題を修正。onRegionChangeComplete で選択中のマーカーの
showCallout() を再呼び出しすることで、ユーザーが明示的に閉じるまで吹き出しを
表示し続けるようにした。

吹き出しの明示的な解除方法:
- マップの背景をタップ
- 吹き出し自体をタップ
- 別のマーカーをタップ(切り替え)

https://claude.ai/code/session_01TuXxMDD3bmhRDQ5QN2NYxi
@TinyKitten TinyKitten self-assigned this Feb 11, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Feb 11, 2026

📝 Walkthrough

Walkthrough

マーカーごとのRef管理を導入し、マーカー選択・コールアウト表示/非表示を扱うハンドラ(マーカー押下、マップ押下、コールアウト押下、領域変更完了)を追加してMapViewとMarkerへ統合しました。

Changes

Cohort / File(s) Summary
Per-Marker Callout Management
app/(tabs)/map.tsx
MapMarkerRef型とデバイスIDごとのmarkerRefsマップ、selectedMarkerIdRefを追加。handleMarkerPresshandleMapPresshandleCalloutPresshandleRegionChangeCompleteを実装し、MapViewonPress/onRegionChangeCompleteMarkerrefコールバックonPress/onCalloutPressを接続。

Sequence Diagram(s)

sequenceDiagram
  participant User as User
  participant Map as MapView
  participant Marker as Marker (ref)
  participant RefStore as markerRefs

  User->>Marker: タップ(handleMarkerPress)
  Marker->>RefStore: selectedMarkerId を設定
  Marker->>Marker: showCallout()

  User->>Map: 背景タップ(handleMapPress)
  Map->>RefStore: selectedMarkerId を取得
  RefStore->>Marker: hideCallout()
  RefStore->>RefStore: selectedMarkerId をクリア

  User->>Map: パン/ズーム(handleRegionChangeComplete)
  Map->>RefStore: selectedMarkerId を取得
  RefStore->>Marker: showCallout()(存在する場合)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • マップ画面実装 #2: 同一ファイル(app/(tabs)/map.tsx)におけるMap画面の改修とマーカー/コールアウト処理追加で強い関連があります。

Poem

🐇🌱 マーカーにぴょんと挨拶したら
小さな窓がぽんと開いたよ
背景タップでおやすみ、また会おうね
地図の上で今日も跳ねる僕の足跡

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed プルリクエストのタイトルは「マップ移動時にマーカーの吹き出しが消えないように修正」で、変更内容の要約と完全に一致しており、主な変更を明確かつ簡潔に説明しています。

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch claude/fix-map-popup-persistence-CExpP

No actionable comments were generated in the recent review. 🎉


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@app/`(tabs)/map.tsx:
- Around line 103-106: handleMapPress should not only clear
selectedMarkerIdRef.current but also call hideCallout() when a marker is
currently selected to ensure the visual callout is removed (same approach as
handleCalloutPress); update the handleMapPress callback to check
selectedMarkerIdRef.current, call hideCallout() if truthy, then set
selectedMarkerIdRef.current = null, keeping existing useCallback signature.

handleMapPressでselectedMarkerIdRef.currentをクリアするだけでなく、
選択中のマーカーがある場合にhideCallout()を呼び出して視覚的にも
吹き出しを確実に非表示にする。

https://claude.ai/code/session_01TuXxMDD3bmhRDQ5QN2NYxi
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@app/`(tabs)/map.tsx:
- Around line 357-371: The Marker onPress is propagating to the parent MapView
on iOS and immediately closing the callout; update the Marker JSX to prevent
propagation by adding the stopPropagation prop (so taps on Marker do not bubble
to handleMapPress), ensure this change is applied alongside existing handlers
(Marker, handleMarkerPress, handleCalloutPress) and that logic which checks
selectedMarkerIdRef.current and calls hideCallout remains unchanged.

iOSでMarkerのonPressが親のMapView.onPressに伝播し、handleMapPressが
呼ばれて吹き出しが即座に閉じてしまう問題を修正。MarkerにstopPropagation
propを追加してイベントのバブリングを防止した。

https://claude.ai/code/session_01TuXxMDD3bmhRDQ5QN2NYxi
@TinyKitten TinyKitten merged commit 64c9341 into main Feb 11, 2026
1 check passed
@TinyKitten TinyKitten deleted the claude/fix-map-popup-persistence-CExpP branch February 11, 2026 01:29
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.

2 participants