Syncfusion Blazor Maps component is ideal for rendering maps from GeoJSON data or from other map providers such as OpenStreetMap and Bing Maps. For example, you can render the World map or the United States map and customize it to the desired look using built-in options in the Blazor Maps component.
This section briefly explains how to include maps in your Blazor server-side application to demonstrate the permanent and non-permanent countries in the United Nations Security Council. Refer to the Getting Started with Syncfusion Blazor for Server-side in Visual Studio 2019 documentation for introduction and configuring common specifications.
<head>
element of the ~/Pages/_Host.cshtml page.<head>
<link href="_content/Syncfusion.Blazor.Themes/bootstrap4.css" rel="stylesheet" />
<!---CDN--->
@*<link href="https://cdn.syncfusion.com/blazor/18.4.42/styles/bootstrap4.css" rel="stylesheet" />*@
</head>
For Internet Explorer 11 kindly refer the polyfills. Refer the documentation for more information.
<head>
<link href="https://cdn.syncfusion.com/blazor/18.4.42/styles/bootstrap4.css" rel="stylesheet" />
<script src="https://github.com/Daddoon/Blazor.Polyfill/releases/download/3.0.1/blazor.polyfill.min.js"></script>
</head>
Open the ~/_Imports.razor file and include the Syncfusion.Blazor.Maps namespace.
@using Syncfusion.Blazor.Maps
Open the Startup.cs file and add services required by Syncfusion components using services.AddSyncfusionBlazor()
method. Add this method in the ConfigureServices function as follows.
using Syncfusion.Blazor;
namespace BlazorApplication
{
public class Startup
{
....
....
public void ConfigureServices(IServiceColloection services)
{
....
....
services.AddSyncfusionBlazor();
}
}
}
To enable custom client-side source loading from CRG or CDN, please refer to the section about custom resources in Blazor application.
The Syncfusion Maps component can be initialized in any razor page inside the ~/Pages folder. For example, the Maps component is added to the ~/Pages/Index.razor page. In a new application, if Index.razor page has any default content template, then those content can be completely removed and following code can be added.
@page "/"
<SfMaps></SfMaps>
Since the properties related to the map layer is not initialized in the above code, the Maps will not show any content on the web page.
Bind GeoJSON data to the Maps to render any geometric shape in SVG (Scalable Vector Graphics) for powerful data visualization of shapes. For example, you can render the World map and make desired customizations on it. You can also add any number of layers in the maps.
You can use the ShapeData
property in MapsLayer
to load the GeoJSON shape data into the Maps component.
<SfMaps>
<MapsLayers>
@* load shape data *@
<MapsLayer ShapeData='new {dataOptions= "https://cdn.syncfusion.com/maps/map-data/world-map.json"}' TValue="string">
</MapsLayer>
</MapsLayers>
</SfMaps>
The “world-map.json” file contains the World map GeoJSON data.
The DataSource
property is used to represent statistical data in the Maps component. We can define a list of objects as a data source to the Maps component. This data source will be further used to color the map, display data labels, display tooltips, and more. Assign the below list SecurityCouncilDetails to the DataSource
property in MapsLayer
.
@code {
public List<UNCouncilCountry> SecurityCouncilDetails = new List<UNCouncilCountry>{
new UNCouncilCountry { Name= "China", Membership= "Permanent"},
new UNCouncilCountry { Name= "France", Membership= "Permanent" },
new UNCouncilCountry { Name= "Russia", Membership= "Permanent"},
new UNCouncilCountry { Name= "Kazakhstan", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "Poland", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "Sweden", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "United Kingdom", Membership= "Permanent"},
new UNCouncilCountry { Name= "United States", Membership= "Permanent"},
new UNCouncilCountry { Name= "Bolivia", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "Eq. Guinea", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "Ethiopia", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "Côte d Ivoire", Membership= "Permanent"},
new UNCouncilCountry { Name= "Kuwait", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "Netherlands", Membership= "Non-Permanent"},
new UNCouncilCountry { Name= "Peru", Membership= "Non-Permanent"}
};
public class UNCouncilCountry
{
public string Name { get; set; }
public string Membership { get; set; }
};
}
The United Nations Security Council data is referred from source.
You should also specify the field names in the shape data and data source to the ShapePropertyPath
and ShapeDataPath
properties, respectively. These are used to identify the appropriate shapes and match the specific data source values to them.
Please refer to the section for more information on data binding.
<SfMaps>
<MapsLayers>
@*To map shape data name field and data source field*@
<MapsLayer ShapeData='new {dataOptions= "https://cdn.syncfusion.com/maps/map-data/world-map.json"}'
ShapePropertyPath='new string[] {"name"}'
DataSource="SecurityCouncilDetails"
ShapeDataPath="Name" TValue="UNCouncilCountry">
</MapsLayer>
</MapsLayers>
</SfMaps>
For example, consider field names specified in
ShapePropertyPath
andShapeDataPath
have the same value: “United States”. So corresponding color, data label and tooltip related settings will be applied to the United States shape.
The color mapping feature supports customization of shape colors based on the underlying value of shape received from bound data. The values from the field name specified in ShapeDataPath
will be compared for the shapes with the values in the field name specified in the ColorValuePath
property in MapsShapeSettings
. Specify color and value in MapsShapeColorMapping
. Here, “#EDB46F” is specified for “Permanent” and “#F1931B” is specified for “Non-Permanent”.
<SfMaps>
<MapsLayers>
<MapsLayer ShapeData='new {dataOptions= "https://cdn.syncfusion.com/maps/map-data/world-map.json"}'
ShapePropertyPath='new string[] {"name"}'
DataSource="SecurityCouncilDetails"
ShapeDataPath="Name" TValue="UNCouncilCountry">
@* color mapping related configuration *@
<MapsShapeSettings Fill="#E5E5E5" ColorValuePath="Membership">
<MapsShapeColorMappings>
<MapsShapeColorMapping Value="Permanent" Color='new string[] {"#EDB46F"}'></MapsShapeColorMapping>
<MapsShapeColorMapping Value="Non-Permanent" Color='new string[] {"#F1931B"}'></MapsShapeColorMapping>
</MapsShapeColorMappings>
</MapsShapeSettings>
</MapsLayer>
</MapsLayers>
</SfMaps>
Refer code block to know the property value of SecurityCouncilDetails.
Label provides information to users about the shapes, and you can enable label text to the shapes in the Maps component by setting the Visible
property as true and field name from data source in the LabelPath
property in MapsDataLabelSettings
.
<SfMaps>
<MapsLayers>
<MapsLayer ShapeData='new {dataOptions= "https://cdn.syncfusion.com/maps/map-data/world-map.json"}'
ShapePropertyPath='new string[] {"name"}'
DataSource="SecurityCouncilDetails"
ShapeDataPath="Name" TValue="UNCouncilCountry">
@* To add data labels *@
<MapsDataLabelSettings Visible="true" LabelPath="Name" IntersectionAction="IntersectAction.Hide"></MapsDataLabelSettings>
<MapsShapeSettings Fill="#E5E5E5" ColorValuePath="Membership">
<MapsShapeColorMappings>
<MapsShapeColorMapping Value="Permanent" Color='new string[] {"#EDB46F"}'></MapsShapeColorMapping>
<MapsShapeColorMapping Value="Non-Permanent" Color='new string[] {"#F1931B"}'></MapsShapeColorMapping>
</MapsShapeColorMappings>
</MapsShapeSettings>
</MapsLayer>
</MapsLayers>
</SfMaps>
Refer code block to know the property value of SecurityCouncilDetails.
Title can be added to the map to provide quick information to the users about the shapes rendered in the Maps. You can add a title using Text
property in MapsTitleSettings
.
<SfMaps>
@* To add title *@
<MapsTitleSettings Text="Members of the UN Security Council"></MapsTitleSettings>
<MapsLayers>
<MapsLayer ShapeData='new {dataOptions= "https://cdn.syncfusion.com/maps/map-data/world-map.json"}'
ShapePropertyPath='new string[] {"name"}'
DataSource="SecurityCouncilDetails"
ShapeDataPath="Name" TValue="UNCouncilCountry">
<MapsDataLabelSettings Visible="true" LabelPath="Name" IntersectionAction="IntersectAction.Hide"></MapsDataLabelSettings>
<MapsShapeSettings Fill="#E5E5E5" ColorValuePath="Membership">
<MapsShapeColorMappings>
<MapsShapeColorMapping Value="Permanent" Color='new string[] {"#EDB46F"}'></MapsShapeColorMapping>
<MapsShapeColorMapping Value="Non-Permanent" Color='new string[] {"#F1931B"}'></MapsShapeColorMapping>
</MapsShapeColorMappings>
</MapsShapeSettings>
</MapsLayer>
</MapsLayers>
</SfMaps>
Refer code block to know the property value of SecurityCouncilDetails.
The legend items are used to denote color mapping categories, and you can show legend for the maps by setting true to the Visible
property in MapsLegendSettings
.
<SfMaps>
<MapsTitleSettings Text="Members of the UN Security Council"></MapsTitleSettings>
@* To add legend *@
<MapsLegendSettings Visible="true"></MapsLegendSettings>
<MapsLayers>
<MapsLayer ShapeData='new {dataOptions= "https://cdn.syncfusion.com/maps/map-data/world-map.json"}'
ShapePropertyPath='new string[] {"name"}'
DataSource="SecurityCouncilDetails"
ShapeDataPath="Name" TValue="UNCouncilCountry">
<MapsDataLabelSettings Visible="true" LabelPath="Name" IntersectionAction="IntersectAction.Hide"></MapsDataLabelSettings>
<MapsShapeSettings Fill="#E5E5E5" ColorValuePath="Membership">
<MapsShapeColorMappings>
<MapsShapeColorMapping Value="Permanent" Color='new string[] {"#EDB46F"}'></MapsShapeColorMapping>
<MapsShapeColorMapping Value="Non-Permanent" Color='new string[] {"#F1931B"}'></MapsShapeColorMapping>
</MapsShapeColorMappings>
</MapsShapeSettings>
</MapsLayer>
</MapsLayers>
</SfMaps>
Refer code block to know the property value of SecurityCouncilDetails.
The tooltip is used when you cannot display information using the data labels due to space constraints. You can enable tooltip by setting the Visible
property to true in MapsLayerTooltipSettings
.
<SfMaps>
<MapsTitleSettings Text="Members of the UN Security Council"></MapsTitleSettings>
<MapsLegendSettings Visible="true"></MapsLegendSettings>
<MapsLayers>
<MapsLayer ShapeData='new {dataOptions= "https://cdn.syncfusion.com/maps/map-data/world-map.json"}'
ShapePropertyPath='new string[] {"name"}'
DataSource="SecurityCouncilDetails"
ShapeDataPath="Name" TValue="UNCouncilCountry">
<MapsDataLabelSettings Visible="true" LabelPath="Name" IntersectionAction="IntersectAction.Hide"></MapsDataLabelSettings>
<MapsShapeSettings Fill="#E5E5E5" ColorValuePath="Membership">
<MapsShapeColorMappings>
<MapsShapeColorMapping Value="Permanent" Color='new string[] {"#EDB46F"}'></MapsShapeColorMapping>
<MapsShapeColorMapping Value="Non-Permanent" Color='new string[] {"#F1931B"}'></MapsShapeColorMapping>
</MapsShapeColorMappings>
</MapsShapeSettings>
@* To add tooltip for map shape *@
<MapsLayerTooltipSettings Visible='true' ValuePath="Name"></MapsLayerTooltipSettings>
</MapsLayer>
</MapsLayers>
</SfMaps>
Refer code block to know the property value of SecurityCouncilDetails.