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

  • 🌐 Spanish (es) translation — Added Spanish localization for all UI strings (PR #17 by @daljo25)

Supported Languages

English, Arabic, Dutch, Indonesian, Spanish (new!)

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

What's New

🗺️ Leaflet.js Provider — Free Alternative to Google Maps

You can now use Leaflet.js + OpenStreetMap as a completely free map provider — no API key required.

Enable globally via .env:

PINPOINT_PROVIDER=leaflet

Or per field:
Pinpoint::make('location')->provider('leaflet')
PinpointEntry::make('location')->provider('leaflet')

Features (Leaflet provider)

- 🔍 Location search via Nominatim (OpenStreetMap)
- 🏠 Full reverse geocoding — address, province, city, district, village, postal code, street, street number
- ✋ Draggable marker & resizable radius circle
- 📍 Multi-marker support for PinpointEntry with colored SVG pins & popups
- 🌓 Dark mode tile URL support (LEAFLET_TILE_URL_DARK)
- ⚙️  Configurable tile server, attribution, and Nominatim URL

✅ Fully Backward Compatible

Existing users default to provider = google — no changes required.

---
Full Changelog: https://github.com/fahiem152/filament-pinpoint/blob/main/CHANGELOG.md

---
v1.1.5

What's New

Filament v5 Support

The package now officially supports Filament v5 alongside v4. Composer constraint updated to ^4.0|^5.0.

Street & Street Number Auto-fill

New methods to auto-fill street data from Google reverse geocoding:

  • streetField('street') - Auto-fill street name
  • streetNumberField('street_number') - Auto-fill street number

Dark Theme Fix

Fixed search box styling in dark mode — improved background contrast and cleaner border styling.

v1.1.4

🎨 What's New

This release improves the radius circle feature with better
visual design and user experience.

Improvements

  • Enhanced Visual Design

    • Changed circle color from red to blue (#4285F4) for a
      friendlier, more professional appearance
    • Circle now matches Google's Material Design color palette
  • Better Z-Index Layering

    • Marker (pin) now appears above the circle with proper z-index
      stacking
    • Marker: zIndex 200 (always on top)
    • Circle: zIndex 100 (below marker)
    • No more visual confusion when marker overlaps with circle edge
  • Improved Interactivity

    • Added clickable: true to circle for better user interaction
    • Smoother drag-to-resize experience
    • Better visual feedback during drag operations
  • Enhanced Documentation

    • Updated README with clearer radius usage instructions
    • Added visual hierarchy explanation
    • Improved code examples

How to Use Radius Feature

Pinpoint::make('location')                                          
    ->latField('lat')                                               
    ->lngField('lng')                                               
    ->radiusField('radius')  // Enable radius circle                
    ->defaultRadius(500)     // Default 500 meters            

Features:

  • Resize radius by dragging the white handle on circle's edge
  • Radius value automatically saves to your database field in
    real-time
  • Completely optional - just omit radiusField() if you don't need it
v1.1.3

v1.1.3 - 2026-01-06

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

What's Changed

Fixed

  • 🔧 Environment variables now properly override default map settings (#5)
  • 🔄 Repeater field compatibility (#6)

Changed

  • Updated README with Repeater usage example
  • Added GOOGLE_MAPS_DEFAULT_HEIGHT env support

Full Changelog: https://github.com/fahiem152/filament-pinpoint/blob/main/CHANGELOG.md

v1.1.1

What's New

Added

  • 🌐 Multi-language support (EN, AR, NL, ID)
  • shortAddressField() - Auto-fill short address
  • countryField() - Auto-fill country name
  • PinpointEntry component for Infolists

Fixed

  • Translation strings now use proper Laravel package namespace

Contributors

v1.1.0

What's New in v1.1.0

New Features

  • Address Component Fields - New methods to auto-fill address components from Google Maps reverse geocoding:
    • provinceField() - Province/State (administrative_area_level_1)
    • cityField() - City/County (administrative_area_level_2)
    • districtField() - District (administrative_area_level_3)
    • postalCodeField() - Postal/ZIP code

Bug Fixes

  • Null Handling - Address 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 - Fixed border visibility in both light and dark modes.

UI Improvements

  • Improved search input styling with visible border
  • Relocated current location button for better UX

Usage Example

Pinpoint::make('location')
    ->latField('lat')
    ->lngField('lng')
    ->addressField('address')
    ->provinceField('province')
    ->cityField('city')
    ->districtField('district')
    ->postalCodeField('postal_code');

Contributors

v1.0.3

Fixed

  • 🐛 Map blank saat edit - peta sekarang muncul dengan benar saat edit record
  • 🐛 Address tidak tampil di search box - alamat dari database sekarang ditampilkan di search input saat edit
  • 🐛 Lat/Lng tidak tersimpan - koordinat dari database (string) sekarang dikonversi ke float dengan benar

Changed

  • Tambah addressField ke state hydration untuk load address dari database saat edit
  • Tambah parseFloat() untuk konversi lat/lng dari string ke float
  • Tambah x-model="address" pada search input untuk two-way binding
  • Update reverseGeocode() untuk sync address ke search box
v1.0.0

Features

  • 🔍 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

Requirements

  • PHP 8.1+
  • Filament 4.0+
  • Google Maps API Key
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