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.
CanBeReadOnly on Pinpoint form component (#18 by [@gpibarra](https://github.com/gpibarra))
readOnly() method to make the map display-only (no drag, no click, no search)readOnlyOn() method to restrict editing on specific operations (e.g., readOnlyOn('view'))readOnly(fn () => !auth()->user()->can('edit'))var(--gray-*) and var(--primary-*) instead of hardcoded hex values!important overrides from dark mode styles.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?