专家 / nova-map-marker-field
一个Laravel Nova字段。
资助包维护!
mikebronner
Requires
- illuminate/support: ^9.0
- laravel/nova: ^3.31
- symfony/thanks: ^1.1
README
支持此包
这是一个MIT许可的开源项目,其持续发展得益于社区的支待。如果您想支持此项目以及我们的其他包,请考虑成为赞助者。
我们感谢以下赞助者的慷慨,请花点时间了解一下他们
要求
- Laravel 9.0+
- Nova 4.10+
安装
- 安装包
composer require specialist/nova-map-marker-field
- 发布标记图标资源(如果您指定了自己的图标,则此步骤不是必需的)
php artisan vendor:publish --provider="Specialist\NovaMapMarkerField\Providers\Service"
实现
要创建地图标记字段,所需的所有内容就是一个表单标签,其余选项将应用默认值
use Specialist\NovaMapMarkerField\MapMarker; MapMarker::make("Location"),
坐标字段名称
默认情况下,字段将查找模型上的 latitude
和 longitude
字段。但是,如果您的模型使用不同的名称,您可以使用 ->latitude('lat')
和 ->longitude('long')
方法进行自定义
MapMarker::make("Location") ->latitude('lat') ->longitude('long'),
默认设置
您可以指定默认设置,如缩放级别和初始地图中心坐标。如果未指定,缩放级别将默认为 12;坐标将默认为 (0, 0)。
MapMarker::make("Location") ->defaultZoom(8) ->defaultLatitude(41.823611) ->defaultLongitude(-71.422222),
中心圆圈
可选的 centerCircle()
方法允许在地图中心点绘制一个圆圈。
MapMarker::make("Location") ->centerCircle($radiusInMeters, $color, $borderWidth, $backgroundOpacity),
搜索提供者
底层搜索功能由 leaflet-geosearch 提供。请参阅他们的文档以了解提供者配置。默认情况下,我们使用 ESRI 搜索提供者。
MapMarker::make("Location") ->searchProvider('google') ->searchProviderKey('xxxxxxxxxxxxxxxxxxxxxxxxxxx'),
您可以在地理搜索框中指定自定义搜索标签
MapMarker::make('Location') ->searchLabel('Enter Address');
瓦片图层
您可以使用与 Leaflet 兼容的任何瓦片提供者。请参阅他们的文档以了解瓦片图层 URL。默认情况下,我们使用 OpenStreetMap 提供的瓦片。
MapMarker::make("Location") ->tileProvider('http://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png'),
在 Nova 自定义组件事件上重新居中
- 您可以从自定义组件中触发以下地图重新居中
Nova.$emit("recenterMapOn", {latitude, longitude});
- 您可以定义 MapMarker 字段将响应的自定义事件名称
MapMarker::make('Location') ->listenToEventName('customCenterEventTriggerName');
然后您可以从自定义组件中触发事件,如下所示Nova.$emit("customCenterEventTriggerName", {latitude, longitude});
用法
在创建或编辑时,您可以通过搜索地址或城市来获取地图,以便获取您想要的坐标的通用区域。然后,您可以通过拖动地图来精确地定位标记——标记将始终位于中间,同时您可以在其下方移动地图。
在详情页上查看地图时,地图和标记不是交互式的,也没有搜索功能。然而,用户可以自由地缩放地图。
截图
创建/编辑字段
详细字段
索引字段
对质量的承诺
在包开发过程中,我尽最大努力采用良好的设计和开发实践,以确保本包尽可能优秀。我的包开发清单包括
- ✅ 使用单元测试尽可能接近 100% 的代码覆盖率。
- ✅ 除去 SensioLabs Insight 和 Scrutinizer 识别的所有问题。
- ✅ 完全符合 PSR1、PSR2 和 PSR4。
- ✅ 在 README.md 中包含全面的文档。
- ✅ 提供一个符合http://keepachangelog.com中概述格式的最新CHANGELOG.md。
- ✅ 所有代码中不得出现PHPMD或PHPCS警告。
贡献指南
请遵守并尊重包含的《行为准则》https://github.com/Specialist/nova-map-marker-field/blob/master/CODE_OF_CONDUCT.md。
问题报告
在报告问题时,请尽可能完整地填写包含的模板。信息不完整的问题可能会被忽略或关闭,因为没有足够的信息来进行操作。
提交Pull Requests
请查阅贡献指南https://github.com/Specialist/nova-map-marker-field/blob/master/CONTRIBUTING.md。只有符合所有标准的Pull Requests才会被接受。
如果你喜欢开源软件,给使用的仓库点个⭐️。
我们已将出色的symfony/thanks
composer包作为开发依赖项包含在内。通过为使用的包点星来告诉你的操作系统包维护者你对他们表示感谢。只需在安装此包后运行composer thanks
即可。(不用担心,由于它是开发依赖项,它不会安装在你的生产环境中。)