- 
                            Data Grids / Data Management- 
                Data Grid- Overview
- 
                Data Binding
- 
                Filtering
- Sorting
- 
                Editing
- 
                Grouping
- 
                Selection
- Focused Row
- Paging
- 
                Scrolling
- 
                Columns
- 
                Master-Detail
- 
                Data Summaries
- 
                Drag & Drop
- 
                Export to PDF
- 
                Export to Excel
- Appearance
- 
                Customization
- State Persistence
- 
                Adaptability
- 
                Keyboard Navigation
- Right-To-Left Support
 
- 
                Tree List- Overview
- 
                Data Binding
- 
                Filtering
- Sorting
- 
                Editing
- 
                Selection
- Focused Row
- Paging
- 
                Columns
- Drag & Drop
- State Persistence
- Adaptability
- 
                Keyboard Navigation
 
- 
                Card View
- 
                Pivot Grid- Overview
- 
                Data Binding
- 
                Field Management
- 
                Data Summaries
- Drill Down
- Filtering
- 
                Scrolling
- 
                Export to Excel
- Chart Integration
- Customization
- State Persistence
 
- 
                Filter Builder
 
- 
                
- 
                            Data Visualization- 
                Charts- Overview
- 
                Data Binding
- 
                Common Concepts- 
                Axis
- 
                Aggregation
- 
                Tooltips
- 
                Selection
- 
                Customization
- 
                Zooming
- 
                Export
 
- 
                
- 
                Area Charts
- 
                Bar Charts
- Bullet Charts
- 
                Doughnut Charts
- 
                Financial Charts
- 
                Funnel and Pyramid Charts
- 
                Line Charts
- Pareto Chart
- 
                Pie Charts
- 
                Point Charts
- 
                Polar and Radar Charts
- 
                Range Charts
- Sankey Chart
- 
                Sparkline Charts
- 
                Tree Map
 
- 
                Gauges- Overview
- 
                Runtime update
- 
                Bar Gauge
- 
                Circular Gauge
- 
                Linear Gauge
 
- 
                Diagram- Overview
- 
                Data Binding
- 
                Featured Shapes
- 
                Custom Shapes
- 
                Document Capabilities
- 
                User Interaction
- UI Customization
- Adaptability
 
 
- 
                
- 
                            Scheduling / Planning- 
                Scheduler- Overview
- 
                Data Binding
- 
                Views
- 
                Appointments
- 
                Timetable
- Editing
- 
                Grouping
- Virtual Scrolling
- Drag & Drop
- 
                Customization
- Adaptability
 
- 
                Gantt- Overview
- Data Binding
- 
                Filtering
- Sorting
- Strip Lines
- Export to PDF
- Validation
- 
                Customization
 
 
- 
                
- 
                            Reporting- 
                AI-powered Extensions
- 
                Interaction
- 
                Report Types
- 
                Data binding
- 
                Real-life Reports
- 
                Layout Features
- 
                Report Controls
- 
                Web-specific Features
 
- 
                
- 
                            Rich Text Editor- Overview
- Load/Save
- Document Protection
- 
                Templates
- Autocorrect
- 
                Customization
- Simple View
 
- 
                            Spreadsheet- Overview
- 
                Open a Document
- Export And Printing
- 
                Features
- 
                UI Customization
 
- 
                            Messaging
- 
                            WYSIWYG Editor
- 
                            Forms
- 
                            Data Editors- Overview
- 
                Common Concepts
- 
                Calendar
- Check Box
- Color Box
- Date Box
- 
                Date Range Box
- 
                Number Box
- Radio Group
- 
                Range Selector
- Range Slider
- Slider
- Speech To Text
- Switch
- Text Area
- Text Box
 
- 
                            Drop-Downs- Autocomplete
- 
                Drop Down Box
- 
                Select Box
- 
                Tag Box
- 
                Lookup
 
- 
                            Buttons
- 
                            File Upload / File Management- 
                File Manager- Overview
- 
                File System Types
- 
                Customization
 
- 
                File Uploader
 
- 
                
- 
                            Popup and Notifications
- 
                            Navigation- Overview
- Accordion
- 
                Context Menu
- 
                Menu
- Multi View
- 
                Drawer
- 
                Tab Panel
- 
                Tabs
- 
                Toolbar
- 
                Stepper
- Pagination
- 
                List
- 
                Tree View
- Right-to-Left Support
 
- 
                            Layout- 
                Tile View
- Splitter
- 
                Gallery
- Scroll View
 
- 
                
- 
                            Interactive Wrappers- 
                Sortable
- Resizable
 
- 
                
- 
                            Progress Indicators
- 
                            Maps- Overview
- 
                Map
- 
                Vector Map- 
                Data Binding
- Multiple Layers
- 
                Markers
- Legend
- 
                Zooming and Panning
- 
                Customization
 
- 
                
 
- 
                            Localization
Related Demos:
        
            Your search did not match any results.
        
    Vector Map - Floor Plan
This demo illustrates how you can use custom data in the VectorMap component. Visualized, the custom data constitutes a floor plan.
            
            Backend API
        
    @(Html.DevExtreme().VectorMap()
    .ID("vector-map")
    .MaxZoomFactor(4)
    .Projection(new JS("floorPlanProjection"))
    .Layers(layers => {
        layers.Add()
            .HoverEnabled(false)
            .DataSource(d => d.StaticJson().Url(Url.Action("GetBuildingData")))
            .Name("building");
        layers.Add()
            .Color("transparent")
            .BorderWidth(1)
            .Label(l => l
                .Enabled(true)
                .DataField("name")
            )
            .DataSource(d => d.StaticJson().Url(Url.Action("GetRoomData")))
            .Name("rooms");
    })
    .Tooltip(t => t
        .Enabled(true)
        .CustomizeTooltip("vectorMap_customizeTooltip")
    )
)
<script src="~/data/floorPlanProjection.js"></script>
<script>
    function vectorMap_customizeTooltip(arg) {
        if(arg.layer.name === "rooms")
            return { text: "Square: " + arg.attribute("square") + " ft²" };
    }
</script>
        
        using Microsoft.AspNetCore.Mvc;
using DevExtreme.NETCore.Demos.Models.SampleData;
namespace DevExtreme.NETCore.Demos.Controllers {
    public class VectorMapController : Controller {
        public ActionResult FloorPlan() {
            return View();
        }
        [HttpGet]
        public object GetBuildingData() {
            return SampleData.BuildingData;
        }
        [HttpGet]
        public object GetRoomData() {
            return SampleData.RoomData;
        }
    }
}
        
        using System;
using System.Collections.Generic;
using System.Linq;
namespace DevExtreme.NETCore.Demos.Models.SampleData {
    public partial class SampleData {
        public static readonly IEnumerable<object> BuildingData = new[] {
            new {
                type = "FeatureCollection",
                features = new[] {
                    new {
                        type = "Feature",
                        geometry = new {
                            type = "Polygon",
                            coordinates = new[] {
                                new[] {
                                    new[] { 10, -80 },
                                    new[] { -80, -80 },
                                    new[] { -80, 80 },
                                    new[] { 40, 80 },
                                    new[] { 40, -20 },
                                    new[] { 100, -20 },
                                    new[] { 100, -80 },
                                    new[] { 30, -80 },
                                    new[] { 30, -74 },
                                    new[] { 34, -74 },
                                    new[] { 34, -68 },
                                    new[] { 40, -68 },
                                    new[] { 40, -74 },
                                    new[] { 94, -74 },
                                    new[] { 94, -26 },
                                    new[] { 40, -26 },
                                    new[] { 40, -60 },
                                    new[] { 34, -60 },
                                    new[] { 34, 74 },
                                    new[] { -74, 74 },
                                    new[] { -74, 30 },
                                    new[] { 10, 30 },
                                    new[] { 10, 24 },
                                    new[] { -74, 24 },
                                    new[] { -74, -24 },
                                    new[] { 10, -24 },
                                    new[] { 10, -30 },
                                    new[] { -74, -30 },
                                    new[] { -74, -74 },
                                    new[] { 10, -74 },
                                }
                            }
                        }
                    }
                }
            }
        };
    }
}
        
        var floorPlanProjection = DevExpress.viz.map.projection({
    to: function(coordinates) {
        return [coordinates[0]/100, coordinates[1]/100];
    },
    from: function(coordinates) {
        return [coordinates[0]*100, coordinates[1]*100];
    }
});
        
        using System;
using System.Collections.Generic;
using System.Linq;
namespace DevExtreme.NETCore.Demos.Models.SampleData {
    public partial class SampleData {
        public static readonly IEnumerable<object> RoomData = new[] {
            new {
                type = "FeatureCollection",
                features = new[] {
                    new {
                        type = "Feature",
                        properties = new {
                            name = "Room 1",
                            square = 576
                        },
                        geometry = new {
                            type = "Polygon",
                            coordinates = new[] {
                                new[] {
                                    new[] { -74, -30 },
                                    new[] { 34, -30 },
                                    new[] { 34, -74 },
                                    new[] { -74, -74 }
                                }
                            }
                        }
                    },
                    new {
                        type = "Feature",
                        properties = new {
                            name = "Room 2",
                            square = 600
                        },
                        geometry = new {
                            type = "Polygon",
                            coordinates = new[] {
                                new[] {
                                    new[] { -74, 24 },
                                    new[] { 34, 24 },
                                    new[] { 34, -24 },
                                    new[] { -74, -24 }
                                }
                            }
                        }
                    },
                    new {
                        type = "Feature",
                        properties = new {
                            name = "Room 3",
                            square = 540
                        },
                        geometry = new {
                            type = "Polygon",
                            coordinates = new[] {
                                new[] {
                                    new[] { -74, 74 },
                                    new[] { 34, 74 },
                                    new[] { 34, 30 },
                                    new[] { -74, 30 }
                                }
                            }
                        }
                    },
                    new {
                        type = "Feature",
                        properties = new {
                            name = "Room 4",
                            square = 288
                        },
                        geometry = new {
                            type = "Polygon",
                            coordinates = new[] {
                                new[] {
                                    new[] { 40, -26 },
                                    new[] { 94, -26 },
                                    new[] { 94, -74 },
                                    new[] { 40, -74 }
                                }
                            }
                        }
                    }
                }
            }
        };
    }
}
        
        #vector-map {
    height: 400px;
}