noname9/nova-map

Laravel Nova的地图字段

维护者

详细信息

github.com/noname9/nova-map

来源

安装: 2

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分支: 29

语言:Vue

0.1 2022-02-15 13:57 UTC

This package is auto-updated.

Last update: 2024-09-15 19:27:39 UTC


README

Total Downloads Latest Stable Version

地图字段

此地图字段当前仅在详细视图显示

Gif!

您可以使用此地图字段与三种不同类型的空间数据

  • GeoJSON字符串属性

  • 纬度和经度属性

  • 纬度和经度都在单个文本字段中

  • 核心Laravel空间类型

    • 线字符串
    • 多边形
    • 几何体
    • 几何体集合
    • 多点
    • 多线字符串
    • 多边形。要使用这些核心类型,您需要安装grimzy/laravel-mysql-spatial。有关设置的详细信息,请参阅下面的章节。这可以与其它数据库一起使用,但效果可能有所不同。
  • 您可以为地图设置高度(以像素为单位)

  • 默认情况下,该字段在索引和表单视图中被禁用

  • 这是一个WIP - 请向GitHub提交问题

空间类型

为了指定传递给此字段的类型,您必须设置spatialType(),例如

    ->spatialType('Point')

以下是有效的空间类型

  • LatLon
  • LatLonField(单个字段)
  • GeoJSON
  • 线字符串
  • 多边形
  • 几何体
  • 几何体集合
  • 多点
  • 多线字符串
  • MultiPolygon

示例

Map::make('Some Point Field', 'point_field_name')
    ->spatialType('Point'),

多边形

Map::make('Some Polygon Field', 'polygon_field_name')
    ->spatialType('Polygon'),

GeoJSON

Map::make('Some GeoJSON Field')
    ->spatialType('GeoJSON')
    ->geojson('geojson_field_name'),

纬度和经度(分开的字段)

Map::make('Some Point Location')
    ->spatialType('LatLon')
    ->latitude('latitude_field_name')
    ->longitude('longitude_field_name'),

纬度和经度(单个字段)

Map::make('Some Point Location', 'coordinate_field_name')
    ->spatialType('LatLonField'),

设置高度

Map::make('Some Point Field', 'point_field_name')
    ->spatialType('Point')
    ->height('300px'),

设置Laravel空间类型

您需要将grimzy/laravel-mysql-spatial安装到主应用程序中

composer require grimzy/laravel-mysql-spatial

将SpatialTrait添加到您的模型中

use SpatialTrait;

然后您还需要设置模型中设置的任何空间字段

protected $spatialFields = [
    'geo_point',
    'geo_linestring',
    ...
];

您的模型现在可以处理空间数据到Nova

未来开发

  • 所有空间类型的编辑功能
  • 在地图上查看地点字段的地址
  • 从核心空间类型访问中移除对grimzy包的依赖
  • 允许使用所有数据库空间字段
  • 进一步自定义地图
    • Tailwind高度类
    • 自定义几何体样式
      • 标记图标
      • 颜色、粗细、透明度
    • 底图
      • 街道
      • 地形
      • 卫星图
    • 导航工具(指南针、放大/缩小)
  • 替代地图提供者
    • Google Maps
    • Mapbox
    • OpenLayers