Skip to content

Add geo‑tagged image overlay pipeline (Maps thumbnail, metadata burn, gallery save) - #21

Merged
krishna3554 merged 1 commit into
mainfrom
codex/implement-geo-tagged-camera-with-google-maps
May 14, 2026
Merged

krishna3554 merged 1 commit into
mainfrom
codex/implement-geo-tagged-camera-with-google-maps

Conversation

@krishna3554

Copy link
Copy Markdown
Owner

Motivation

  • Provide a production-quality pipeline that, after an existing camera capture, permanently burns a modern geo-tag overlay (map thumbnail, coordinates, address, timestamp, placeholders, watermark) into the photo and saves the final image to the device gallery.
  • Use high-accuracy location + reverse geocoding, a Google Static Maps thumbnail for visual context, and pixel-level compositing so the overlay is embedded into image bytes rather than only rendered in UI.

Description

  • Added a new GeoPhotoModel and LocationService that perform high-accuracy GPS lookup, reverse geocoding, and robust error handling for GPS disabled, permission denied/deniedForever, timeouts, and other failures.
  • Implemented GoogleMapService to build and download Google Static Maps thumbnails (uses google_static_maps_controller + http) with a graceful fallback when no API key or network is available, and added Android strings.xml/Manifest wiring for the Maps API key placeholder.
  • Implemented ImageOverlayService (using the image package) plus ImageUtils to composite a dark rounded metadata card, embedded map thumbnail, address, lat/long, date/time, metric placeholders, and an app watermark directly into the photo pixels and write a final JPG to temp storage.
  • Integrated gallery persistence via GalleryService (uses image_gallery_saver_plus), updated result flow in ResultScreen to generate the geo-tagged image, save it, display a processing UI and a saved banner, and return the saved gallery path; added on-screen preview widgets GeoInfoOverlay and MapPreviewWidget and minimal changes to existing camera flow to trigger location resolution after capture.
  • Updated LocationInfo model to include extended metadata (altitude, speed, heading, place fields) and updated pubspec.yaml to include required packages plus Android manifest changes for Maps API key placeholder.

Testing

  • Ran git diff --check to ensure no whitespace/merge issues and code changes were staged (succeeded in repo environment).
  • Attempted flutter pub get and flutter analyze in the container but both could not run because Flutter is not installed in this environment (flutter: command not found).
  • The pipeline is implemented with runtime fallbacks (map thumbnail optional) and explicit error messaging for location failures; please run flutter pub get, then test on an Android device/emulator with a valid Maps API key (set via android/app/src/main/res/values/strings.xml or --dart-define=GOOGLE_MAPS_API_KEY) to validate end-to-end behavior.

Codex Task

@krishna3554
krishna3554 merged commit f641515 into main May 14, 2026
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant