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.
.dark selector, since plugin views aren't scanned by the app's Tailwind JIT compiler.pinpoint-search-input, .pinpoint-search-dropdown, .pinpoint-search-item) under .fi-fo-pinpoint for proper specificityPINPOINT_PROVIDER=leaflet in your .env to enable.
PinpointEntry with colored SVG pins, popups, and fitBoundsLEAFLET_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')provider, leaflet.tile_url, leaflet.tile_url_dark, leaflet.tile_attribution, leaflet.nominatim_urlprovider = 'google', no changes required^4.0|^5.0 (PR #11 by [@jyrkidn](https://github.com/jyrkidn), PR #12 by [@manusiakemos](https://github.com/manusiakemos))streetField() and streetNumberField() methods for auto-filling street name and street number from reverse geocoding (PR #11 by [@jyrkidn](https://github.com/jyrkidn))gray-900 to gray-800 for better contrast!important overrides on border and focus stylesfilament/filament: ^5.0.zIndex layering: marker (200) appears above circle (100)clickable: true to circle for better interactivityeditable: true propertypins() method to set array of multiple markers with coordinateslabel for marker titlecolor (8 predefined colors: red, blue, green, yellow, purple, pink, orange, ltblue)icon for custom marker icon URLinfo for custom HTML info window contentfitBounds() method to enable/disable auto-fit behavioroverflow: clip for stricter clipping🔧 Environment variables now properly override default map settings (#5)
defaultLat, defaultLng, defaultZoom, height) changed from hardcoded values to null.env are now used when defaultLocation() is not explicitly calledGOOGLE_MAPS_DEFAULT_HEIGHT environment variable support🔄 Repeater field compatibility (#6)
getFieldPath() function to calculate correct field paths for Repeater itemsdata.latitude instead of data.items.0.latitude)loadExistingCoordinates() to properly load saved lat/lng values when editing Repeater items$wire.set() calls to use dynamic path calculationshortAddressField() - Auto-fill short address (premise + route + street number)countryField() - Auto-fill country namePinpointEntry component for Infolists (read-only map display)filament-pinpoint::pinpoint.*)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 codenull when Google Maps API returns no data, preventing stale data from persistingaddressField to state hydration for loading address from database on editparseFloat() for lat/lng string to float conversionx-model="address" binding on search input for two-way data bindingreverseGeocode() to sync address state with search boxHow can I help you explore Laravel packages today?