davidpiesse / nova-map
Map field for Laravel Nova
Installs: 220 152
Dependents: 0
Suggesters: 0
Security: 0
Stars: 116
Watchers: 8
Forks: 27
Open Issues: 5
Language:Vue
pkg:composer/davidpiesse/nova-map
Requires
- php: >=7.1.0
 
README
Map Field
This map field currently ONLY shows in details view
You can use this Map Field with three different sort of spatial data:
- 
GeoJSON String property
 - 
Latitude and Longitude properties
 - 
Latitude and Longitude both in a single text field
 - 
Core Laravel Spatial Types
- Point
 - LineString
 - Polygon
 - Geometry
 - GeometryCollection
 - MultiPoint
 - MultiLineString
 - MultiPolygon To use these core types you need to install grimzy/laravel-mysql-spatial See the section below on setting this up. This can work with other databases, but YMMV.
 
 - 
You can set the height of the map in px
 - 
The field is disabled in Index and Form views by default
 - 
This is very much a WIP - please submit issues to GitHub
 
Spatial Types
To specify what sort of spatial data you are passing to this field you MUST set the spatialType() for example
->spatialType('Point')
These are the valid Spatial Types
- LatLon
 - LatLonField (single field)
 - GeoJSON
 - Point
 - LineString
 - Polygon
 - Geometry
 - GeometryCollection
 - MultiPoint
 - MultiLineString
 - MultiPolygon
 
Examples
Point
Map::make('Some Point Field', 'point_field_name') ->spatialType('Point'),
Polygon
Map::make('Some Polygon Field', 'polygon_field_name') ->spatialType('Polygon'),
GeoJSON
Map::make('Some GeoJSON Field') ->spatialType('GeoJSON') ->geojson('geojson_field_name'),
Latitude & Longitude (in seperate fields)
Map::make('Some Point Location') ->spatialType('LatLon') ->latitude('latitude_field_name') ->longitude('longitude_field_name'),
Latitude & Longitude (in single fields)
Map::make('Some Point Location', 'coordinate_field_name') ->spatialType('LatLonField'),
Set the Height
Map::make('Some Point Field', 'point_field_name') ->spatialType('Point') ->height('300px'),
Setting up the Laravel Spatial Types
You need to install grimzy/laravel-mysql-spatial into your main application
composer require grimzy/laravel-mysql-spatial
Add the SpatialTrait to your Model
use SpatialTrait;
You then also need to set any spatial fields you have set in the Model
protected $spatialFields = [ 'geo_point', 'geo_linestring', ... ];
Your Model is now ready to process spatial data to Nova
Future Development
- Editing capabilities for all Spatial Types
 - View Place Field address on a Map
 - Remove reliance on grimzy package from accessing core Spatial Types
 - Allow all DB spatial fields to be used
 - Customize the map futher
- Tailwind Height classes
 - Customise Geometry Styling
- Marker Icon
 - Colors, Thicknesses, Opacity
 
 - Basemap
- Streets
 - Topo
 - Satellite
 
 - Navigation Tools (Compass, Zoom In/Out)
 
 - Alternative Map Providers
- Google Maps
 - Mapbox
 - OpenLayers