承接 goodappr/moonshine-yandex-maps 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

goodappr/moonshine-yandex-maps

Composer 安装命令:

composer require goodappr/moonshine-yandex-maps

包简介

Yandex Maps and Polygons fields for MoonShine 4.x - point markers and drawable polygons

README 文档

README

Пакет полей для MoonShine 4.x — работа с картами и полигонами через Yandex Maps API.

Cover

Возможности

  • YandexMap — точки с метками, балуны, кастомный контент
  • YandexMapPolygon — рисование полигонов, зоны доставки, районы

Требования

Установка

composer require goodappr/moonshine-yandex-maps

Конфигурация

Опубликуйте конфиг и задайте API-ключ:

php artisan vendor:publish --tag=moonshine-yandex-maps-config

В .env:

YANDEX_MAPS_API_KEY=your_yandex_maps_api_key

Либо добавьте в config/services.php:

'yandex' => [
    'maps_api_key' => env('YANDEX_MAPS_API_KEY', ''),
],

Использование

YandexMap — точки на карте

use MoonShine\YandexMaps\Fields\YandexMap;
use MoonShine\UI\Fields\Text;
use MoonShine\UI\Fields\Textarea;
use MoonShine\UI\Fields\Select;
use MoonShine\UI\Fields\Color;
use MoonShine\UI\Fields\Image;

YandexMap::make('Местоположение', 'location')
    ->coordinates([55.751574, 37.573856])
    ->zoom(12)
    ->mapHeight('400px')
    ->indexDisplayFields(['address', 'phone', 'email'])
    ->indexShowAddressCopy(true)
    ->balloonContent([
        'title' => 'model.name',
        'address' => 'model.address',
        'phone' => 'model.phone',
    ])
    ->placemarkProperties([
        'hintContent' => 'Кликните для просмотра',
        'iconCaption' => 'Филиал',
    ])
    ->placemarkOptions([
        'preset' => Select::make('Тип иконки', 'icon_type')
            ->options([
                'islands#blueHomeIcon' => 'Дом',
                'islands#redRestaurantIcon' => 'Ресторан',
            ])
            ->default('islands#blueHomeIcon'),
        'iconColor' => Color::make('Цвет', 'icon_color')->default('#3B82F6'),
        'iconImageHref' => Image::make('Кастомная иконка', 'iconImageHref')
            ->dir('icons')
            ->allowedExtensions(['png', 'svg', 'webp']),
        'draggable' => true,
    ])
    ->customBalloonFields([
        Text::make('Заголовок балуна', 'title')->default('Объект'),
        Textarea::make('Описание', 'description'),
    ]);

YandexMap — форма, карта и метка YandexMap — настройки балуна и иконки

Данные сохраняются в JSON: lat, lng, coordinates, balloon_data, placemark_options, placemark_properties.

YandexMapPolygon — полигоны

use MoonShine\YandexMaps\Fields\YandexMapPolygon;

YandexMapPolygon::make('Зоны доставки', 'delivery_zones')
    ->mapHeight('300px')
    ->allowMultiplePolygons()
    ->allowEditExisting()
    ->allowImportExport()
    ->defaultPolygonColor('#3B82F6')
    ->defaultPolygonOpacity(0.3)
    ->polygonColors(['#3B82F6', '#10B981', '#F59E0B', '#EF4444'])
    ->showMiniMapOnIndex();

YandexMapPolygon — рисование полигонов

Подключение assets для Layout

Для копирования адреса по клику и корректной отправки длинных данных полигонов добавьте трейт в ваш Layout:

namespace App\MoonShine\Layouts;

use MoonShine\YandexMaps\Traits\WithYandexMapsAssets;
use MoonShine\Laravel\Layouts\AppLayout;

class MoonShineLayout extends AppLayout
{
    use WithYandexMapsAssets;

    protected function assets(): array
    {
        return [
            ...parent::assets(),
            ...$this->getYandexMapsAssets(),
        ];
    }
}

Структура данных

YandexMap (location)

{
  "lat": 55.751574,
  "lng": 37.573856,
  "coordinates": [55.751574, 37.573856],
  "balloon_data": { "title": "...", "description": "..." },
  "placemark_options": { "preset": "...", "iconImageHref": "..." },
  "placemark_properties": { "hintContent": "...", "iconCaption": "..." }
}

YandexMapPolygon (GeoJSON-like)

[
  {
    "type": "Polygon",
    "coordinates": [[[lng, lat], [lng, lat], ...]],
    "style": { "fillColor": "#3B82F6", "strokeColor": "#1D4ED8" },
    "data": { "name": "Зона 1" }
  }
]

Миграции

Для хранения:

$table->json('location')->nullable();
$table->json('delivery_zones')->nullable();

Лицензия

MIT

goodappr/moonshine-yandex-maps 适用场景与选型建议

goodappr/moonshine-yandex-maps 是一款 基于 Blade 开发的 Composer 扩展包,目前已累计 10 次下载、GitHub Stars 达 3, 最近一次更新时间为 2026 年 02 月 11 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「admin」 「maps」 「laravel」 「yandex」 「polygons」 「moonshine」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 goodappr/moonshine-yandex-maps 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 goodappr/moonshine-yandex-maps 我们能提供哪些服务?
定制开发 / 二次开发

基于 goodappr/moonshine-yandex-maps 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

  • Stars: 3
  • Watchers: 0
  • Forks: 1
  • 开发语言: Blade

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-11