Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Pinpoint Laravel Package

fahiem/filament-pinpoint

Filament Pinpoint adds a location picker for Filament 4/5 with Google Maps or free Leaflet/OpenStreetMap. Includes search/autocomplete, click-to-set and draggable marker, current location, radius editing, reverse geocoding to fill address fields, dark mode, and translations.

View on GitHub
Deep Wiki
Context7
v1.1.8

Added

v1.1.7

Fixed

  • 🌙 Dark mode dropdown unreadable on Leaflet provider - Fixed search autocomplete dropdown showing white background with invisible text in dark mode (#16 by [@daljo25](https://github.com/daljo25))
    • Replaced Tailwind utility classes with plain CSS using .dark selector, since plugin views aren't scanned by the app's Tailwind JIT compiler
    • Scoped all search component styles (.pinpoint-search-input, .pinpoint-search-dropdown, .pinpoint-search-item) under .fi-fo-pinpoint for proper specificity
    • Search input, dropdown container, dropdown items, and result text now fully adapt to dark mode
    • Applied same fix to Google Maps search input for consistency
v1.1.6

Added

  • 🗺️ Leaflet.js provider - Free alternative to Google Maps using OpenStreetMap + Nominatim. No API key required. Set PINPOINT_PROVIDER=leaflet in your .env to enable.
    • Full search via Nominatim (location search & reverse geocoding)
    • Draggable marker, resizable radius circle, current location button
    • All auto-fill fields supported: address, province, city, district, village, postal code, country, street, street number
    • Multi-marker support for PinpointEntry with colored SVG pins, popups, and fitBounds
  • 🌓 Dark tile URL for Leaflet - Set LEAFLET_TILE_URL_DARK to use a different tile layer in dark mode (e.g. CartoDB Dark)
  • ⚙️ provider() method - Override the map provider per field instance: Pinpoint::make('location')->provider('leaflet')
  • 📦 New config keys: provider, leaflet.tile_url, leaflet.tile_url_dark, leaflet.tile_attribution, leaflet.nominatim_url

Notes

  • Fully backward compatible — existing users default to provider = 'google', no changes required
  • Leaflet.js (1.9.4) and its CSS are loaded on-demand from unpkg CDN only when the leaflet provider is active
v1.1.5

Added

Fixed

  • 🌙 Dark theme search box - Fixed search input background and border styling in dark mode (PR #14 by [@ismailalterweb](https://github.com/ismailalterweb))
    • Changed dark background from gray-900 to gray-800 for better contrast
    • Removed unnecessary !important overrides on border and focus styles
v1.1.4

Added

  • 🚀 Filament v5 support - The package now officially supports Filament v5.
  • 📦 Updated composer constraints to allow filament/filament: ^5.0.

Improved

  • 🎨 Enhanced radius circle UX and visual hierarchy
    • Changed circle color from red to blue (#4285F4) for better visual appearance
    • Added zIndex layering: marker (200) appears above circle (100)
    • Added clickable: true to circle for better interactivity
    • Improved drag-to-resize experience with proper z-index stacking
  • 🔧 Code quality improvements (quote style consistency)

Technical Details

  • Circle is now fully editable with editable: true property
  • Users can resize radius by dragging the circle's edge handles
  • Radius value automatically syncs to form field in real-time
  • Better visual feedback during drag operations
v1.1.3

Added

  • Multi-pin support for PinpointEntry - Display multiple markers on a single map in infolist view
    • New pins() method to set array of multiple markers with coordinates
    • Each pin supports optional label for marker title
    • Each pin supports optional color (8 predefined colors: red, blue, green, yellow, purple, pink, orange, ltblue)
    • Each pin supports optional icon for custom marker icon URL
    • Each pin supports optional info for custom HTML info window content
    • Info windows appear on marker click
  • 🎯 Auto-fit bounds - Map automatically zooms to show all markers
    • New fitBounds() method to enable/disable auto-fit behavior
    • When enabled, map viewport adjusts to display all pins
    • Single pin displays at default zoom level
  • 📍 "Use my location" button - New GPS location button for Pinpoint form field
    • Uses browser's Geolocation API to get current device location
    • Auto-fills coordinates and reverse geocodes address
    • Clean grayscale design that works with any theme
    • Smooth hover and active states
    • Full dark mode support

Fixed

  • 🐛 Fixed "Use my location" button positioning issues in form field
    • Button no longer appears outside form container
    • Proper RTL (Right-to-Left) layout support
    • Consistent styling across different themes

Changed

  • 🎨 Improved map container overflow handling with overflow: clip for stricter clipping
  • 🔄 Refactored PinpointEntry to support both single marker and multiple markers
  • 💅 Enhanced button styling with better accessibility (focus states, active states)
v1.1.2

Fixed

  • 🔧 Environment variables now properly override default map settings (#5)

    • Default properties (defaultLat, defaultLng, defaultZoom, height) changed from hardcoded values to null
    • Config values from .env are now used when defaultLocation() is not explicitly called
    • Added GOOGLE_MAPS_DEFAULT_HEIGHT environment variable support
  • 🔄 Repeater field compatibility (#6)

    • Added getFieldPath() function to calculate correct field paths for Repeater items
    • Fixed field updates not working inside Repeater (was using data.latitude instead of data.items.0.latitude)
    • Added loadExistingCoordinates() to properly load saved lat/lng values when editing Repeater items
    • Map now correctly displays saved location when editing (instead of default location)

Changed

  • Updated all $wire.set() calls to use dynamic path calculation
  • Improved state hydration for nested form structures

Contributors

v1.1.1

Added

  • 🌐 Multi-language support with translation files:
    • English (en)
    • Arabic (ar) - العربية
    • Dutch (nl) - Nederlands
    • Indonesian (id)
  • New address component fields:
    • shortAddressField() - Auto-fill short address (premise + route + street number)
    • countryField() - Auto-fill country name
  • PinpointEntry component for Infolists (read-only map display)

Fixed

  • Translation strings now use proper Laravel package namespace (filament-pinpoint::pinpoint.*)
  • Restored missing translation files that were accidentally removed

Contributors

v1.1.0

Added

  • New address component fields for reverse geocoding:
    • provinceField() - Auto-fill province/state (administrative_area_level_1)
    • cityField() - Auto-fill city/county (administrative_area_level_2)
    • districtField() - Auto-fill district (administrative_area_level_3)
    • postalCodeField() - Auto-fill postal/zip code
  • Improved search input styling with visible border

Fixed

  • Address component fields now always update when location changes
  • Fields are set to null when Google Maps API returns no data, preventing stale data from persisting
  • Search input border now displays correctly in both light and dark modes

Changed

  • Relocated current location button position for better UX
  • Updated button styling (border-radius changed to 20px)

Contributors

v1.0.3

Fixed

  • 🐛 Map blank on edit - map now displays correctly when editing existing records
  • 🐛 Address not showing in search box - address from database now displays in search input during edit mode
  • 🐛 Lat/Lng not saving properly - coordinates from database (string) now correctly converted to float

Changed

  • Add addressField to state hydration for loading address from database on edit
  • Add parseFloat() for lat/lng string to float conversion
  • Add x-model="address" binding on search input for two-way data binding
  • Update reverseGeocode() to sync address state with search box
v1.0.2

Added

  • ⭐ Post-install star reminder message
  • 🌙 Dark mode support for all UI elements

Changed

  • Search input now adapts to light/dark theme
  • Location button now adapts to light/dark theme
  • Helper text now adapts to light/dark theme
  • Fix homepage URL in composer.json

Removed

  • Coordinates display below map (lat/lng still saved to form fields)
v1.0.1

Fixed

  • Minor fixes and improvements
v1.0.0

Initial Release

  • 📍 Google Maps location picker for Filament 4
  • 🔍 Search location using Google Places Autocomplete
  • 📍 Click on map to set marker
  • ✋ Draggable marker support
  • 📱 Get current device location
  • 🏠 Reverse geocoding to auto-fill address fields
  • ⚙️ Configurable default location, zoom, and height
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle