MapZonesField edits geographic service areas. It starts in zone collection mode with address search disabled. Use it for delivery areas, coverage regions and application-defined service boundaries.
Basic usage
Drawing tools
Escape cancels a draft; Backspace removes its latest point. Drafts remain separate from committed form state. Circle sampling respects the configured vertex limit. Use
drawingTools([]) to prevent creation while retaining configured editing of existing zones.
Editing and history
Select a zone to change its label/color, drag vertices, insert midpoint vertices, remove vertices, move the complete shape or rotate it in 15-degree steps. Arrow keys move selected vertices; Shift increases the step. Each completed operation is validated atomically. An invalid operation leaves committed geometry unchanged. Undo/redo covers accepted geometry and metadata with a combined 2 MiB history/future budget; a new edit after undo clears the redo branch. Movement and rotation use the current map projection and are not surveying calculations.editableZones(false) disables geometry/property editing; deletableFeatures(false) separately controls removal. Disabled/read-only fields block edits. featureListMaxHeight(320) bounds a long zone list instead of stretching the page.
State and database storage
Use a JSON column with an Eloquentarray cast for coverage. The field stores a GeoJSON FeatureCollection of Polygons. Coordinate pairs are [longitude, latitude]; the first and final pair close each ring.
Validation and overlap policies
The server independently validates coordinates, topology, feature counts, labels and configured area limits. Hard limits are 200 features and 10,000 total vertices. Each zone has one closed outer ring, 3–511 distinct vertices and nonzero area. Duplicate IDs, malformed numbers, self-crossings, touching nonadjacent edges and antimeridian-crossing edges are rejected. Area limits use square meters and a spherical Earth model. They are not cadastral measurements. Allowed bounds/radius policies validate feature coordinates; they do not provide complete polygon containment analysis.requireZoneLabels() is enforced on the server. Default feature text is plain text; custom metadata must be explicitly admitted.