定制 eg-mohamed/filament-map-picker 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

eg-mohamed/filament-map-picker

最新稳定版本:1.0.1

Composer 安装命令:

composer require eg-mohamed/filament-map-picker

包简介

A Leaflet / OpenStreetMap map picker field for Filament v5.

README 文档

README

A simple, polished Filament v5 map picker field built on Leaflet + OpenStreetMap (free services only).

Screenshots

Light Mode — Search & Suggestions

Light mode

Dark Mode — Controls & Theme Matching

Dark mode

Goals (v1)

  • Fast to install, no API keys required
  • Great UX: search, collapsible search, my-location, reset, fullscreen, zoom buttons
  • Dark / light theme compatible
  • RTL-friendly search input (dir="auto")
  • SPA-safe (cleans up on Filament/Livewire navigation)

Non-goals (v1)

  • Paid providers (Google / Mapbox)
  • Drawing tools (polygons, GeoJSON, etc.)

Requirements

  • PHP ^8.2
  • Laravel ^11 or ^12
  • Filament ^5

Installation

composer require salemaljebaly/filament-map-picker

Publish config (optional):

php artisan vendor:publish --tag=filament-map-picker-config

Basic Usage (Form)

This component writes to your latitude/longitude fields. Keep the map field itself non-dehydrated.

use Filament\Forms;
use SalemAljebaly\FilamentMapPicker\MapPicker;

Forms\Components\Hidden::make('latitude')->rules(['nullable', 'numeric']),
Forms\Components\Hidden::make('longitude')->rules(['nullable', 'numeric']),

MapPicker::make('location')
    ->label('Location')
    ->latlngFields('latitude', 'longitude')
    ->searchable()
    ->collapsibleSearch()
    ->draggable()
    ->height(320),

Usage (Infolist / View)

use SalemAljebaly\FilamentMapPicker\MapView;

MapView::make('location')
    ->label('Location')
    ->latlngFields('latitude', 'longitude')
    ->height(240),

Configuration

Defaults live in config/filament-map-picker.php.

Common options:

  • default_location.lat, default_location.lng
  • default_zoom
  • height
  • marker.color, marker.draggable
  • auto_dark_mode
  • tile_provider (osm, cartodb_light, cartodb_dark)
  • controls.my_location, controls.fullscreen, controls.reset
  • control_position (topleft, topright, bottomleft, bottomright)
  • search.enabled, search.collapsible, search.throttle_ms, search.min_length, search.limit
  • search.nominatim.email (env: NOMINATIM_EMAIL)

Customizing Icons

Icons are Blade views under:

  • resources/views/icons/*.blade.php

To override icons in your app, create matching files here:

  • resources/views/vendor/filament-map-picker/icons/*.blade.php

For consistent theming, make sure your SVGs use stroke="currentColor" / fill="currentColor" instead of hard-coded colors.

Geolocation Notes

The browser geolocation API requires HTTPS (except localhost). If it fails, it’s usually due to:

  • Permission denied in the browser
  • Non-HTTPS site
  • Location services disabled (OS / browser)

Nominatim (Search) Notes

Nominatim has usage policies and rate limits. Browser requests can’t reliably set a custom User-Agent header.

If you expect heavy usage, proxy geocoding through your backend. For light usage, configure:

NOMINATIM_EMAIL="you@example.com"

统计信息

  • 总下载量: 10
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 4
  • 开发语言: Blade

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固