PHPackages                             infinityxtech/filament-world-map-widget - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. infinityxtech/filament-world-map-widget

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

infinityxtech/filament-world-map-widget
=======================================

World map stats widget

v5.0.0(2mo ago)135.9k↓38.1%3MITPHPPHP ^8.3CI failing

Since Nov 2Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/zpm-packages/filament-world-map-widget)[ Packagist](https://packagist.org/packages/infinityxtech/filament-world-map-widget)[ Docs](https://github.com/infinityxtech/filament-world-map-widget)[ GitHub Sponsors](https://github.com/InfinityXTech)[ RSS](/packages/infinityxtech-filament-world-map-widget/feed)WikiDiscussions main Synced yesterday

READMEChangelog (5)Dependencies (14)Versions (11)Used By (0)

Filament World Map Widget
=========================

[](#filament-world-map-widget)

[![Latest Version on Packagist](https://camo.githubusercontent.com/f0cb8938b27e31e4583fa8889b1dc6ff8278f667cfbdef6835ecd1b79ebbf0c3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f696e66696e69747978746563682f66696c616d656e742d776f726c642d6d61702d7769646765742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/infinityxtech/filament-world-map-widget)[![GitHub Tests Action Status](https://camo.githubusercontent.com/2a1d05bb5de8650d150abe5a06c7c022dd199b0e5d2640338a6e95b12ab4b94c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f696e66696e69747978746563682f66696c616d656e742d776f726c642d6d61702d7769646765742f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/infinityxtech/filament-world-map-widget/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/02cd4983c95b7234b3d81d57475e942390691464b027b5bcd138d294bbf822af/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f696e66696e69747978746563682f66696c616d656e742d776f726c642d6d61702d7769646765742f6669782d7068702d636f64652d7374796c696e672e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/infinityxtech/filament-world-map-widget/actions?query=workflow%3A%22Fix+PHP+code+styling%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/9efec1ffef0d3db02698dbb947a7d2f7785bf8b32a3f711f69e11b4f75af3449/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f696e66696e69747978746563682f66696c616d656e742d776f726c642d6d61702d7769646765742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/infinityxtech/filament-world-map-widget)

[![World map widget screenshot](https://private-user-images.githubusercontent.com/100382372/382478422-5373a841-6918-42b1-8227-698261a774b5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODMwMzMxODUsIm5iZiI6MTc4MzAzMjg4NSwicGF0aCI6Ii8xMDAzODIzNzIvMzgyNDc4NDIyLTUzNzNhODQxLTY5MTgtNDJiMS04MjI3LTY5ODI2MWE3NzRiNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzAyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcwMlQyMjU0NDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lNTdjNmFmMzdiNTFkMWI1YzU0ZjNkMDA5NzM5NGE4OGNmNTZkODc3ZjMxODc4ZmM2YjEzZjE4ZWQxNmNjYzcxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ._GsmjIWYxud4gGbrBE6VefM5KBIB-SyAe6fUU9U7hMI)](https://private-user-images.githubusercontent.com/100382372/382478422-5373a841-6918-42b1-8227-698261a774b5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODMwMzMxODUsIm5iZiI6MTc4MzAzMjg4NSwicGF0aCI6Ii8xMDAzODIzNzIvMzgyNDc4NDIyLTUzNzNhODQxLTY5MTgtNDJiMS04MjI3LTY5ODI2MWE3NzRiNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzAyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcwMlQyMjU0NDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lNTdjNmFmMzdiNTFkMWI1YzU0ZjNkMDA5NzM5NGE4OGNmNTZkODc3ZjMxODc4ZmM2YjEzZjE4ZWQxNmNjYzcxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ._GsmjIWYxud4gGbrBE6VefM5KBIB-SyAe6fUU9U7hMI)

Display country-level statistics in a Filament widget powered by [jsVectorMap](https://jvm-docs.vercel.app/docs/introduction).

Compatibility
-------------

[](#compatibility)

BranchFilamentPHP`main``^5.0``^8.3``v4``^4.0``^8.1``v3``^3.0``^8.1`Installation
------------

[](#installation)

```
composer require infinityxtech/filament-world-map-widget
```

Creating a widget
-----------------

[](#creating-a-widget)

```
php artisan make:filament-map-widget VisitorGeoMap
```

Register the widget in a Filament dashboard or page:

```
use App\Filament\Widgets\VisitorGeoMap;

public function getWidgets(): array
{
    return [
        VisitorGeoMap::class,
    ];
}
```

Dashboard Filters
-----------------

[](#dashboard-filters)

The widget supports Filament dashboard filters, including live filters from `HasFiltersForm`. The map container remains protected with `wire:ignore`, while the widget root gets a checksum key so Livewire remounts the Alpine map when `stats()` or map options change.

```
namespace App\Filament\Widgets;

use Filament\Widgets\Concerns\InteractsWithPageFilters;
use InfinityXTech\FilamentWorldMapWidget\Widgets\WorldMapWidget;

class VisitorGeoMap extends WorldMapWidget
{
    use InteractsWithPageFilters;

    public function stats(): array
    {
        $range = $this->pageFilters['range'] ?? null;

        return [
            'US' => filled($range) ? 70000 : 35000,
            'RS' => filled($range) ? 30000 : 15000,
        ];
    }
}
```

```
namespace App\Filament\Pages;

use App\Filament\Widgets\VisitorGeoMap;
use Filament\Forms\Components\DatePicker;
use Filament\Pages\Dashboard as BaseDashboard;
use Filament\Pages\Dashboard\Concerns\HasFiltersForm;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;

class Dashboard extends BaseDashboard
{
    use HasFiltersForm;

    public function filtersForm(Schema $schema): Schema
    {
        return $schema
            ->components([
                Section::make()
                    ->schema([
                        DatePicker::make('range')
                            ->label('Date range')
                            ->live(),
                    ])
                    ->columns(2)
                    ->columnSpanFull(),
            ]);
    }

    public function getWidgets(): array
    {
        return [
            VisitorGeoMap::class,
        ];
    }
}
```

Available Maps
--------------

[](#available-maps)

```
Map::WORLD
Map::WORLD_MERC
Map::US_MILL_EN
Map::US_MERC_EN
Map::US_LCC_EN
Map::US_AEA_EN
Map::SPAIN
Map::RUSSIA
Map::CANADA
Map::IRAQ
Map::BRASIL
```

Customization
-------------

[](#customization)

Override any of these methods in your widget:

```
use Illuminate\Contracts\Support\Htmlable;
use InfinityXTech\FilamentWorldMapWidget\Enums\Map;

public function stats(): array
{
    return [
        'US' => 35000,
        'RS' => 15000,
    ];
}

public function heading(): string | Htmlable | null
{
    return 'World Map';
}

public function tooltip(): string | Htmlable
{
    return 'stats';
}

public function map(): Map | string
{
    return Map::WORLD;
}

public function customMapUrl(): ?string
{
    return null;
}

public function color(): array
{
    return [0, 120, 215];
}

public function height(): string
{
    return '332px';
}

public function additionalOptions(): array
{
    return [];
}
```

To include a custom map, publish an accessible jsVectorMap map file and return both the map name and URL:

```
public function map(): Map | string
{
    return 'custom-map';
}

public function customMapUrl(): ?string
{
    return 'https://example.test/js/custom-map.js';
}
```

For more map options, see the [jsVectorMap documentation](https://jvm-docs.vercel.app/docs/introduction).

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [InfinityX Tech](https://github.com/InfinityXTech)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance87

Actively maintained with recent releases

Popularity31

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 66.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~60 days

Recently: every ~117 days

Total

10

Last Release

64d ago

Major Versions

v1.0.2 → v3.0.02025-01-18

v1.0.3 → v3.x-dev2025-01-18

v3.x-dev → v4.0.02025-08-31

v2.0.1 → v5.0.02026-04-30

PHP version history (2 changes)v1.0.0PHP ^8.1

v5.0.0PHP ^8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/211412089?v=4)[ZPM Labs](/maintainers/zpmlabs)[@ZPMLabs](https://github.com/ZPMLabs)

---

Top Contributors

[![sasaorasanin](https://avatars.githubusercontent.com/u/100382372?v=4)](https://github.com/sasaorasanin "sasaorasanin (10 commits)")[![sald19](https://avatars.githubusercontent.com/u/1674971?v=4)](https://github.com/sald19 "sald19 (5 commits)")

---

Tags

laravelInfinityXTechfilament-world-map-widget

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/infinityxtech-filament-world-map-widget/health.svg)

```
[![Health](https://phpackages.com/badges/infinityxtech-filament-world-map-widget/health.svg)](https://phpackages.com/packages/infinityxtech-filament-world-map-widget)
```

###  Alternatives

[stephenjude/filament-feature-flags

Filament implementation of feature flags and segmentation with Laravel Pennant.

122177.8k1](/packages/stephenjude-filament-feature-flags)[ysfkaya/filament-phone-input

A phone input component for Laravel Filament

3161.3M25](/packages/ysfkaya-filament-phone-input)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)[marcelweidum/filament-expiration-notice

Customize the livewire expiration notice

94135.4k5](/packages/marcelweidum-filament-expiration-notice)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17760.2k3](/packages/stephenjude-filament-jetstream)[stephenjude/filament-debugger

About

104162.2k2](/packages/stephenjude-filament-debugger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
