davidpiesse / nova-map
Laravel Nova的地图字段
0.0.9
2022-06-04 09:30 UTC
Requires
- php: >=7.1.0
README
地图字段
此地图字段目前仅在详情视图中显示
您可以使用此地图字段与三种不同的空间数据类型
-
GeoJSON字符串属性
-
纬度和经度属性
-
纬度和经度都在一个文本字段中
-
核心Laravel空间类型
- 点
- 线字符串
- 多边形
- 几何体
- 几何体集合
- 多点
- 多线字符串
- 多边形。要使用这些核心类型,您需要安装grimzy/laravel-mysql-spatial。有关设置方法的说明,请参阅下面的章节。这也可以与其它数据库一起工作,但效果可能因数据库而异。
-
您可以为地图设置高度(单位:px)
-
默认情况下,该字段在索引和表单视图中被禁用
-
这是一个非常初步的工作版本 - 请向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