hostit-online/nova-map

Laravel Nova 地图字段

安装: 0

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分支: 29

语言:Vue

dev-master 2023-06-26 06:56 UTC

This package is auto-updated.

Last update: 2024-09-26 09:37:36 UTC


README

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

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

  • GeoJSON 字符串属性

  • 纬度和经度属性

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

  • Laravel 核心空间类型

    • 线字符串
    • 多边形
    • 几何体
    • 几何体集合
    • 多点
    • 多线字符串
    • 多边形。要使用这些核心类型,您需要安装 grimzy/laravel-mysql-spatial。请参阅下文中的设置部分。这可能与其他数据库一起工作,但效果可能不同。
  • 您可以设置地图的高度(以像素为单位)

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

  • 这是一个非常早期的原型 - 请将问题提交到 GitHub

空间类型

要指定传递给此字段的空间数据类型,您必须设置 spatialType(),例如

    ->spatialType('Point')

以下是有效的空间类型

  • 纬度和经度
  • 纬度和经度字段(单个字段)
  • GeoJSON
  • 线字符串
  • 多边形
  • 几何体
  • 几何体集合
  • 多点
  • 多线字符串
  • 多边形

示例

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 高度类
    • 自定义几何体样式
      • 标记图标
      • 颜色、粗细、透明度
    • 底图
      • 街道
      • 地形
      • 卫星
    • 导航工具(指南针、放大/缩小)
  • 其他地图提供商
    • 谷歌地图
    • Mapbox
    • OpenLayers