# Concepts and Properties

This topic provides information about Concepts and Properties in Maps for WPF.

## Content

This section details with basic **C1Maps** concepts and describes the main properties.
**Map Source**
**C1Maps** can display geographical information from several sources. By default, the Maps control uses **Microsoft LiveMaps** aerial photographs as the source, but you can change that using the [Source](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.Source.html) property in [C1Maps](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.html) class, which takes an object of type [MultiScaleTileSource](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.MultiScaleTileSource.html).
The following sources are included:

* **Virtual Earth Aerial Source**
    Setting the **Source** property to an instance of [VirtualEarthAerialSource](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.VirtualEarthAerialSource.html) class, lets the **MultiScaleTileSource** object type access Microsoft's Virtual Earth aerial tiles.
<br>
    ![Maps control with Virtual Earth Aerial Source](https://cdn.mescius.io/document-site-files/images/b2f10bde-b014-49ed-ba3f-2bf12981f263/images/maps-virtualearth-aerialsource.png)
<br>
    ```csharp
    map1.Source = new VirtualEarthAerialSource();
    ```
* **Virtual Earth Road Source**
<br>
    Setting the **Source** property to an instance of [VirtualEarthRoadSource](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.VirtualEarthRoadSource.html) class, lets the **MultiScaleTileSource** object type access Microsoft's Virtual Earth road tiles.
<br>
    ![Maps control with Virtual Earth Road Source.](https://cdn.mescius.io/document-site-files/images/b2f10bde-b014-49ed-ba3f-2bf12981f263/images/maps-virtualearth-roadsource.png)
<br>
    ```csharp
    map2.Source = new VirtualEarthRoadSource();
    ```
* **Virtual Earth Hybrid Source**
<br>
    Setting the **Source** property to an instance of [VirtualEarthHybridSource](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.VirtualEarthHybridSource.html) class, lets the **MultiScaleTileSource** object type access Microsoft's Virtual Earth hybrid tiles.
<br>
    ![Maps control with Virtual Earth Hybrid Source.](https://cdn.mescius.io/document-site-files/images/b2f10bde-b014-49ed-ba3f-2bf12981f263/images/maps-virtualearth-hybridsource.png)
<br>
    ```csharp
    map3.Source = new VirtualEarthHybridSource();
    ```

**Visibility**
The portion of the map that is currently visible is determined by the [Center](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.Center.html) and [Zoom](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.Zoom.html) properties, and by the size of the control:
The **Center** property is of type **Point** but it actually represents a geographic coordinate in which the X property is longitude and the Y property is latitude. The user can change the value of the **Center** property by dragging the map with the mouse, or by using the navigator control shown on the left top corner.
The **Zoom** property indicates the current resolution of the map. A zoom value of 0 has the map totally zoomed out, and each increment of 1 doubles the map resolution. The user can change the value of the Zoom property using the mouse wheel or the zoom control on the left side of the control.
**Coordinate Systems**
**C1Maps** uses three coordinate systems:

* **Geographic** coordinates mark points in the world using latitude and longitude. This coordinate system is not Cartesian, which means the scale of the map may change as you pan.
* **Logical** coordinates go from 0 to 1 on each axis for the whole extent of the map, and they are easier to work with because they are Cartesian coordinates.
* **Screen** coordinates are the pixel coordinates of the Control relative to the top-left corner. These are useful for positioning items within the control and for handling mouse events.

**C1Maps** provides four methods for converting between these coordinate systems: [ScreenToGeographic](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.ScreenToGeographic.html), [ScreenToLogic](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.ScreenToLogic.html), [GeographicToScreen](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.GeographicToScreen.html), and [LogicToScreen](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.LogicToScreen.html). The conversion between geographic and logic coordinates is done by the projection configured using the **C1Maps.[Projection](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.C1Maps.Projection.html)** property. The projection can be changed to support a different map, the default is the Mercator projection used by **LiveMaps** and most other providers.
**Information Layers**
In addition to the geographical information provided by the source, you can add layers of information to the map. **C1Maps** includes five layers by default:

* **[MapItemsLayer](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.MapItemsLayer.html)** is the layer used to display arbitrary items positioned geographically on the map. This layer is an **ItemsControl**, so it supports directly adding **UIElement** objects or generic data objects with a **DataTemplate** that can convert them into visual items.
* **[MapVirtualLayer](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.MapVirtualLayer.html)** displays items that are virtualized; this means they are only loaded when the region of the map they belong to is visible. It also supports asynchronous requests, so that new items can be downloaded from the server only when they come into view.
* **[VectorLayer](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.VectorLayer.html)** displays vector data, like lines and polygons, whose vertices are geographically positioned. It can save and load data from KML files.
* **[MapToolsLayer](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.MapToolsLayer.html)** is the next layer, used to display tools for panning and zooming, and a scale. This layer is built into **C1Maps'** template, so it's not necessary to add it manually.
* **[MapTilesLayer](/componentone/api/wpf/online-maps5/dotnet-api/C1.WPF.Maps/C1.WPF.Maps.MapTilesLayer.html)** is the background layer where the map tiles are displayed. You normally don't have to use this layer because it is managed by **C1Maps** automatically.

## See Also

[Quickstart](/componentone/docs/wpf/online-maps5/quickstart)
[End User Interaction](/componentone/docs/wpf/online-maps5/enduser-interaction)