Edit this page

KML Data Import

The RadMap provides support for stunning map overlays through its KML-import feature. Once you have the desired set of features (place marks, images, polygons, textual descriptions, etc.) encoded in KML, you can easily import the data and visualize it through the RadMap control. In this way you can easily visualize complex shapes like country's borders on the map and fill the separate shapes with different colors in order to achieve a sort of grouping.

To learn more about the KML you can read here.

This topic will explain the following:

Reading KML files with RadMap

To read your data you have to use the MapShapeReader class. To learn more about its general usage read the Shape Reader topic.

To pass the desired KML file you have to use the Source property of the MapShapeReader and pass the Uri to the desired .kml file to it. This will automatically generate shapes according to the data inside the file.


<telerik:RadMap x:Name="radMap">
    <telerik:InformationLayer x:Name="informationLayer">
            <telerik:MapShapeReader Source="/Silverlight.Help.RadMapSamples;component/Data/bulgaria.kml" />


this.informationLayer.Reader = new MapShapeReader();
this.informationLayer.Reader.Source = new Uri( "/Silverlight.Help.RadMapSamples;component/Data/bulgaria.kml", UriKind.RelativeOrAbsolute );


Me.informationLayer.Reader = New MapShapeReader()
Me.informationLayer.Reader.Source = New Uri("/Silverlight.Help.RadMapSamples;component/Data/bulgaria.kml", UriKind.RelativeOrAbsolute)

Manual Shape Reading

The RadMap allows you to manually read the file, by which you are able to get the shapes collection, without to automatically insert it into the layer. For this purpose you have to use the KMLReader static class.

First of all read the Shapefile as a resource stream. Note that the file must have its BuildAction set to Resource. After that call the static Read() method of the KMLReader class and pass the resource stream to it. It returns a list of FrameworkElement objects, which you can directly add to the InformationLayer of the RadMap.


<telerik:RadMap x:Name="radMap">
    <telerik:InformationLayer x:Name="informationLayer" />


private void LoadKMLData()
    StreamResourceInfo streamResource = Application.GetResourceStream( new Uri( "/Sample;component/Data/bulgaria.kml", UriKind.RelativeOrAbsolute ) );
    List<FrameworkElement> elements = KmlReader.Read( streamResource.Stream );
    foreach ( FrameworkElement element in elements )
        this.informationLayer.Items.Add( element );


Private Sub LoadKMLData()
 Dim streamResource As StreamResourceInfo = Application.GetResourceStream(New Uri("/Silverlight.Help.RadMapSamples;component/Data/bulgaria.kml", UriKind.RelativeOrAbsolute))
 Dim elements As List(Of FrameworkElement) = KmlReader.Read(streamResource.Stream)
 For Each element As FrameworkElement In elements
 Next element
End Sub

Here is a snapshot of the result:

See Also