noname9 / nova-map
Laravel Nova的地图字段
0.1
2022-02-15 13:57 UTC
Requires
- php: >=7.1.0
README
地图字段
此地图字段当前仅在详细视图显示
您可以使用此地图字段与三种不同类型的空间数据
-
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