Skip to content

feat: add Callout component#40

Merged
lodev09 merged 21 commits intomainfrom
feat/callout
Mar 18, 2026
Merged

feat: add Callout component#40
lodev09 merged 21 commits intomainfrom
feat/callout

Conversation

@lodev09
Copy link
Collaborator

@lodev09 lodev09 commented Mar 13, 2026

Summary

Add Callout component for displaying callouts when markers are tapped. Supports custom React content and press handling across all platforms.

Type of Change

  • New feature

Test Plan

  • Tap markers to show callouts with custom content
  • Tap callout info button (Apple Maps) or callout area (Google Maps) to trigger onPress
  • Verify callouts with and without custom children

Checklist

  • I tested on iOS
  • I tested on Android
  • I tested on Web
  • I updated the documentation (if needed)

lodev09 added 3 commits March 13, 2026 17:34
Use custom LuggCalloutContentView with intrinsicContentSize override
so Auto Layout can size detailCalloutAccessoryView properly.
Marker callout support for iOS (Apple Maps + Google Maps),
Android (Google Maps), and Web.
Remove standalone Callout component. Callout is now configured via
Marker props: callout, onCalloutPress, calloutBubbled.

When calloutBubbled={false}, render live interactive views above the
marker instead of rasterized info windows, enabling buttons and
other interactive content inside callouts on all platforms.
lodev09 added 17 commits March 17, 2026 05:26
Compute content bounds from children instead of contentView dimensions
(which are always 0 since it's not Yoga-managed). Run positioning
synchronously to avoid the initial flash at (0,0).
Measure and layout contentView once on show so Android's hit testing
recognizes its bounds. Position updates on camera move only update
translation for performance.
Support anchor-based positioning for non-bubbled callouts on all
platforms. Reposition callout when content size or anchor changes.
…oning

AdvancedMarker.iconView is buggy on Android. For non-rasterized markers,
manually add iconView to the wrapper and position via screen projection
with pointerEvents=NONE so taps pass through to the underlying marker.
- support title/description callouts on web markers
- close callouts on map click
- disable InfoWindow header for native consistency
- add FeatureProperties type with title, description, stroke, fill
- use ThemedText in example app
- Guard null oldProps in LuggCalloutView updateProps (crash fix)
- Deduplicate annotation view hit-test logic into shared helpers
- Add removeViews override for safe batch child removal on Android
- Use stable hasCallout boolean in web Marker handleClick deps
- Guard re-entrancy in Apple Maps didDeselectAnnotationView
- Dismiss non-bubbled callout on Apple Maps destroy
@lodev09 lodev09 marked this pull request as ready for review March 18, 2026 19:59
@lodev09 lodev09 merged commit 45db41b into main Mar 18, 2026
3 checks passed
@lodev09 lodev09 deleted the feat/callout branch March 18, 2026 19:59
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.

1 participant