1. Go to this page and download the library: Download mostafaznv/nova-map-field library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mostafaznv / nova-map-field example snippets
return new class extends Migration
{
public function up()
{
Schema::create('locations', function (Blueprint $table) {
$table->id();
$table->string('title', 150);
# laravel 10
$table->point('location')->nullable();
$table->polygon('area')->nullable();
$table->multiPolygon('areas')->nullable();
# laravel 11 and higher
$table->geometry('location', subtype: 'point')->nullable();
$table->geometry('area', subtype: 'polygon')->nullable();
$table->geometry('areas', subtype: 'multipolygon')->nullable();
$table->timestamps();
});
}
};
namespace App\Models;
use MatanYadaev\EloquentSpatial\Traits\HasSpatial;
class Location extends Model
{
use HasSpatial;
}
namespace App\Models;
use MatanYadaev\EloquentSpatial\Objects\MultiPolygon;
use MatanYadaev\EloquentSpatial\Objects\Point;
use MatanYadaev\EloquentSpatial\Objects\Polygon;
use MatanYadaev\EloquentSpatial\Traits\HasSpatial;
class Location extends Model
{
use HasSpatial;
protected $casts = [
'location' => Point::class,
'area' => Polygon::class,
'areas' => MultiPolygon::class
];
}
namespace App\Nova\Resources;
use Mostafaznv\NovaMapField\Fields\MapMultiPolygonField;
use Mostafaznv\NovaMapField\Fields\MapPointField;
use Mostafaznv\NovaMapField\Fields\MapPolygonField;
class Location extends Resource
{
public function fields(Request $request): array
{
return [
MapPointField::make('location'),
MapPolygonField::make('area'),
MapMultiPolygonField::make('areas'),
];
}
}
namespace App\Nova\Resources;
use App\Nova\Resource;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Image;
use App\Models\Location as Model;
use Mostafaznv\NovaMapField\DTOs\Capture;
use Mostafaznv\NovaMapField\Fields\MapPointField;
class Location extends Resource
{
public static string $model = Model::class;
public function fields(Request $request): array
{
return [
ID::make()->sortable(),
MapPointField::make(trans('Location'), 'location')
->capture(
Capture::make('location_screenshot', 600, 600)
->disk('location')
->maxZoom(9)
->padding([10, 10, 10, 10])
->nearest(true)
->prunable(true)
),
Image::make(trans('Location Screenshot'), 'location_screenshot')
->disk('location')
->prunable()
->exceptOnForms(),
];
}
}
namespace App\Nova\Resources;
use App\Nova\Resource;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Text;
use App\Models\Location as Model;
use Mostafaznv\NovaMapField\DTOs\Capture;
use Mostafaznv\NovaMapField\DTOs\PointValue;
use Mostafaznv\NovaMapField\Enums\MapSearchBoxType;
use Mostafaznv\NovaMapField\Enums\MapSearchProvider;
use Mostafaznv\NovaMapField\Fields\MapPointField;
class Location extends Resource
{
public static string $model = Model::class;
public function fields(Request $request): array
{
return [
ID::make()->sortable(),
Text::make('Title')
->sortable()
->rules('oviderApiKey('api-key')
->withAutocompleteSearch()
->searchAutocompleteMinLength(4)
->searchAutocompleteTimeout(500)
->searchLanguage('fa-IR')
->searchPlaceholder('Placeholder ...')
->searchBoxType(MapSearchBoxType::BUTTON)
->searchResultLimit(3)
->searchResultKeepOpen(true)
->withTransformation()
->transformScale()
->transformRotate()
->transformStretch()
->