User Tools

Site Tools


map_suite_desktop_for_wpf_all_samples

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

map_suite_desktop_for_wpf_all_samples [2020/03/08 06:39] (current)
Line 1: Line 1:
 +====== Wpf Samples ======
 +# Quickstart Sample for WPF
 +
 +### Description
 +This Quickstart Sample will guide you through the process of creating a sample application and will help you become familiar with creating maps with ThinkGeo UI. This sample project supports ThinkGeo UI 12.0.0.0 and higher and will show you how to create a WPF application using the ThinkGeo UI Desktop for WPF control.
 +
 +Quick Start Video: ​
 +- [ThinkGeo UI WPF Quick Start in VS Code - Part 1 - Basemap](https://​youtu.be/​1PkOsPyXeUM)
 +- [ThinkGeo UI WPF Quick Start in VS Code - Part 2 - Adding a ShapeFile](https://​youtu.be/​7U31kP1E_fs)
 +
 +Please refer to our [Wiki](https://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for more details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​QuickstartSample-forWpf.NetCore/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +```csharp
 +ShapeFileFeatureLayer capitalLabelLayer = new ShapeFileFeatureLayer(@"​../​../​Data/​WorldCapitals.shp"​);​
 +GeoFont font = new GeoFont("​Arial",​ 9, DrawingFontStyles.Bold);​
 +GeoSolidBrush txtBrush = new GeoSolidBrush(GeoColor.StandardColors.Maroon);​
 +TextStyle textStyle = new TextStyle("​CITY_NAME",​ font, txtBrush);
 +textStyle.XOffsetInPixel = 0;
 +textStyle.YOffsetInPixel = -6;
 +capitalLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.CreateSimpleTextStyle("​CITY_NAME",​ "​Arial",​ 8, DrawingFontStyles.Italic,​ GeoColor.StandardColors.Black,​ 3, 3);
 +capitalLabelLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level05;​
 +
 +capitalLabelLayer.ZoomLevelSet.ZoomLevel06.DefaultTextStyle = textStyle;
 +```
 +### Getting Help
 +
 +[ThinkGeo UI Desktop for WPF: Wiki Resources](https://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo UI Desktop for WPF: Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Forums](https://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Website](https://​thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +==== Quickstart Sample for Wpf ====
 +
 +The Map Suite WPF QuickStart Guide will guide you through the process of creating a sample application and will help you become familiar with Map Suite. This QuickStart Guide supports Map Suite 10.0.0.0 and higher and will show you how to create a WPF application using Map Suite WPF components.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​QuickstartSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​QuickstartSample-ForWpf| View this sample on Github]]
 +==== Nautical Charts Viewer Sample for Wpf ====
 +
 +ThinkGeo Nautical Charts is a standalone Nuget Package which works with ThinkGeo 10.X Desktop/Web products. It reads and displays S-57 Electronic Navigational Charts(ENC) from International Hydrographic Organization(IHO),​ it also reads the style info defined in an S-52 file. 
 +
 +This sample happens to be written for WPF but the Nautical Charts Package works for Web project as well. Download and open it in Visual Studio, hit F5 and Bang, you are good to go. After you have the charts viewer running, use File -> Open to load an S-57 data, (it can be downloaded from NOAA’s website), the nautical charts will then appear on the map (it generates an index file the first time the data is loaded). ​
 +
 +ThinkGeo uses a default style which can be easily modified. Nautical Charts Viewer provide the ability to switch the map between 5 modes: Day Bright, Day Black, Day White, Dusk and Night. It has 3 verbose mode of “All”, “Standard” and “Base”. It can switch boundaries between dashed line and triangles, it can show/hide different labeling, show different languages, etc. If you are a developer, dig in the code and you can see it’s as simple as creating a layer and set up the properties like following, and it can do more than it shows in this sample
 +
 +{{https://​github.com/​ThinkGeo/​NauticalChartsViewerSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​NauticalChartsViewerSample-ForWpf| View this sample on Github]]
 +
 +==== Vehicle Tracking Sample for Wpf ====
 +
 +The Vehicle Tracking sample template gives you a head start on your next tracking project. With a working code example to draw from, you can spend more of your time implementing the features you care about and less time thinking about how to accomplish the basic functionality of a tracking system.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​VehicleTrackingSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​VehicleTrackingSample-ForWpf| View this sample on Github]]
 +
 +==== Display Iso Lines Sample for Wpf ====
 +
 +In this sample we show how you can use Map Suite to add isolines (commonly known as contour lines) to your .NET application. Isolines are a way to visualize breaks between different groups of data such as elevation levels, soil properties, or just about anything else you can imagine. This sample also shows the various steps in creating isolines, including the gathering of point data, creating a grid using interpolation,​ and finally, picking your isoline break levels. We also quickly dive into some more advanced options such as generating isolines on the fly. 
 +
 +To bring this all together, check out our [instructional video](https://​www.youtube.com/​watch?​v=eejtCTftpzo) that will walk you through the process of setting up and working with isolines in Map Suite. ​
 +
 +Please note that you will need version 5.0.87.0 or newer of Map Suite in order to use isolines. For more information on how to upgrade, see the [Map Suite Daily Builds Guide](http://​wiki.thinkgeo.com/​wiki/​map_suite_daily_builds_guide). ​
 +
 +From 6.0.187.0, the sample has been updated that polygons can also be returned as IsoLines results. You need version 6.0.187.0 or newer of Map Suite in order to use this sample.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DisplayIsoLinesSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DisplayIsoLinesSample-ForWpf| View this sample on Github]]
 +
 +====# Overlays Sample for Wpf
 +
 + ====
 +
 +Discover how to use Overlays to build up your map, or to add existing basemaps to your application. ​
 +The sample can show the following four basemaps:
 +  1. Google Maps
 +  2. Bing Maps
 +  3. ThinkGeo Cloud Maps
 +  4. Open street Maps
 +
 +It can display different styles of maps by setting the map type. Note: you do need to have Bing Maps API key and Google Maps API key to be able to use these two basemaps. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​OverlaysSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​OverlaysSample-ForWpf| View this sample on Github]]
 +
 +==== Map Suite GIS Editor ====
 +
 +Map Suite GIS Editor for Windows lets you design stunning maps, perform geo-analysis and visualize your data. Powerful enough for professional GIS technicians yet accessible enough for nearly anyone who needs to create a map. The GIS Editor is designed as a single-application solution to all of your GIS visualization needs. Now it is open source and free. You can use the Map Suite GIS Editor to: - Quickly build maps using simple and intuitive tools - Visualize data, statistics and trends geographically - Design, style and label rich and detailed maps - Integrate data from a variety of sources, including Web Map Services - Draw right on the map, edit and create feature data - Make your maps publication-ready with titles, legends and annotations You can do all of this without wading through stacks of cryptic toolbars or scouring nested menus. The GIS Editor'​s simple ribbon bar interface puts its full complement of GIS tools at your fingertips in an easy-to-understand way. Wizards make short work of batch geoprocessing,​ geocoding and re-projection operations. And with the built-in Data Repository, you can keep all of your data close at hand, regardless of where it lives.
 +
 +Looking for a customized GIS Editor or custom plug-ins? Please contact sales@thinkgeo.com for more details. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MapSuiteGisEditor/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MapSuiteGisEditor| View this sample on Github]]
 +# How Do I Sample for Wpf
 +
 +### Description
 +
 +The “How Do I?” samples collection is a comprehensive set containing dozens of interactive samples. Available in C#, these samples are designed to hit all the highlights of Map Suite, from simply adding a layer to a map to performing spatial queries and applying a thematic style. Consider this collection your “encyclopedia” of all the Map Suite basics and a great starting place for new users.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​HowDoISample-ForWpf/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +
 +Working...
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Image Style Sample for Wpf ====
 +
 +As you probably already know, using the Map Suite API, you can easily display a point-based feature as an image. But how do you do the same thing for a line or a polygon-based feature? In this WPF project, we show you how to create custom Image Styles for both line and polygon features. With the new ImageAreaStyle,​ you can display a polygon feature that uses an image as its fill. You can see how an image for forest and water is used in the sample project. And with the new ImageLineStyle,​ you can do the same thing with line features. You'll see how an image of a pavement texture is used to represent streets.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ImageStyleSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ImageStyleSample-ForWpf| View this sample on Github]]
 +
 +==== Map Touch Sample for Wpf ====
 +
 +Map Suite WPF Edition supports touch events. This sample shows how to add a marker to map by MapTap event.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MapTouchSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MapTouchSample-ForWpf| View this sample on Github]]
 +
 +==== Print Preview Sample for Wpf ====
 +
 +In this sample we show you how to add robust printing support to your Map Suite applications for the desktop, WPF, web or services environments. Using the code in this sample, you'll be able to build a Print Preview interface that lets your users interactively arrange items (such as a map, scale line, labels, data grid or image) on a virtual page before printing the result to a printer, exporting to a PDF or to a bitmap image. Maps are printed using vector graphics so you can be sure the output will look great on anything from a PDF to a large plotter. The printing system also includes low-level report building classes that make it easy to generate reports in the web or services environment. ​
 +
 +To help you understand the sample, as well as Map Suite'​s new printing system upon which it is based, check out our [instructional video](http://​download.thinkgeo.com/​Videos/​Wiki/​MapSuitePrintingSystemIntroduction.wmv) that will introduce you to all of these concepts and walk you through the sample solution. ​
 +
 +Please note that you will need version 5.0.102.0 or newer of Map Suite in order to use the new printing features. For more information on how to upgrade, see the [Map Suite Daily Builds Guide](http://​wiki.thinkgeo.com/​wiki/​map_suite_daily_builds_guide). ​
 +
 +Note: Users of Map Suite Web, Silverlight and Services Editions will not have access to the interactive drag-and-drop page layout interface pictured here. However, these editions can still be used to programmatically design page layouts in code and then export them to a printer.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​PrintPreviewSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​PrintPreviewSample-ForWpf| View this sample on Github]]
 +
 +==== Building 3D Layer Sample for Wpf ====
 +
 +This project shows to create simulated 3D buildings on WPF map control and OsmBuildingOnlineServiceFeatureLayer.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​Building3DLayerSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​Building3DLayerSample-ForWpf| View this sample on Github]]
 +
 +==== Routing Data Explorer Sample for Wpf ====
 +
 +
 +This is a simple routing data viewer sample viewer which demonstrates how to use the RoutingEngine to get the shortest or fastest route in your Map Suite GIS applications. ​
 +
 +How to use this tool:
 +
 + 1. **Load rtg data:**
 + ​ Click menu "​**File->​Load**"​ browse to a rtg file. You also require a shapefile for the routing source file in the same folder, otherwise it display message "Could not find shp file in the same folder where you seleted"​.
 + 2. **Start routing:**
 +  Use left click for a start point and right click for an end point. If there is no route within **200** meters(you can modify this in source code), the explorer displays a message "​There’s no road within 200 meters to where you clicked on"​. ​  
 +
 +This RoutingEngine supports routing in all of the Map Suite controls such as WinForms, Web, MVC and WebApi.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​RoutingDataExplorerSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​RoutingDataExplorerSample-ForWpf| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Maps Sample for Wpf ====
 +
 +
 +This sample demonstrates how you can display ThinkGeo Cloud Maps in your Map Suite GIS applications. It will show you how to use the XYZFileBitmapTileCache to improve the performance of map rendering. ThinkGeoCloudMapsOverlay uses the ThinkGeo Cloud XYZ Tile Server as raster map tile server. It supports 5 different map styles: ​
 +- Light
 +- Dark
 +- Aerial
 +- Hybrid
 +- TransparentBackground
 +
 +ThinkGeo Cloud Maps support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForWpf| View this sample on Github]]
 +
 +==== Display Cad File Sample for WinForms ====
 +
 +
 +This sample demonstrates how you can read data from an CAD file(*.dwg, *.dxf) in your Map Suite GIS applications,​ and how to render it with CAD embedded style as well as a customized style. This Cad File support would work in all of the Map Suite controls such as Wpf, Web, MVC and WebApi. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_winforms) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DisplayCadFileSample-ForWinForms/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DisplayCadFileSample-ForWinForms| View this sample on Github]]
 +
 +==== Zoom To Full Extent Wpf Sample for Wpf ====
 +
 +
 +This is a simple project that shows how to set the current extent based on a collection of layers. You can use this technique for the common task of having the map set to the full extent. Instead of having to manually set the full extent, you can pass all the layers you want the full extent to be based on.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ZoomToFullExtentWpfSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ZoomToFullExtentWpfSample-ForWpf| View this sample on Github]]
 +
 +==== Place search world reverse geocoding sample for Wpf ====
 +
 +In this sample, we show how you can use Map Suite [World Reverse Geocoding SDK](https://​thinkgeo.com/​gisserver#​feature) to turn a geographic location into meaningful addresses. It ships with an optimized set of worldwide coverage of cities and towns, but any customized data can be supported as well. 
 +
 +{{https://​github.com/​ThinkGeo/​PlaceSearchWorldReverseGeocodingSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 + ====
 +### What areas does the World Reverse Geocoding cover?
 +
 +![World Reverse Geocoding Data Coverage](https://​github.com/​ThinkGeo/​PlaceSearchWorldReverseGeocodingSample-ForWpf/​blob/​master/​Reverse%20geocoding%20data%20coverage.png)
 +
 +
 +
 +[[https://​github.com/​ThinkGeo/​PlaceSearchWorldReverseGeocodingSample-ForWpf| View this sample on Github]]
 +
 +==== BuildingSamples-ForWpf ====
 +
 +In this WPF project, we show how to use `BuildingOverlay`,​ `BuildingStyle` and `OsmBuildingOnlineServiceFeatureLayer`.
 +
 +This repo contains three projects.
 +- BuildingOverlay represents a WPF specific overlay that simulates the 2.5D building rendering.
 +- BuildingStyle represents a style for building that is compatible with the other products such as WPF, WinForms and Web.
 +- OsmBuildingOnlineServiceFeatureLayer represents the online data source of feature layer.
 +
 +![Build Preview](https://​github.com/​ThinkGeo/​BuildingSamples-ForWpf/​raw/​master/​Screenshot.gif)
 +
 +
 +[[https://​github.com/​ThinkGeo/​BuildingSamples-ForWpf| View this sample on Github]]
 +
 +==== PerformanceSample-ForWpf ====
 +
 +This is a WPF desktop sample for drawing performance test of MapSuite product.
 +When running the sample, it will render 16,000 count of rectangle shape features at first, these features will be distributed in 4 layers averagely. After clicking Start button the sample application will update 1,600 count of rectangle shape features per 1,000 milliseconds,​ the time cost of features drawing will display in the application footer.
 +Customer can modify the update rate, update features count, and enable or disable the layers. ​ ====
 +### Key Points
 +- The rectangle shape is added to an InMemoryFeatureLayer,​ the layer uses a ValueStyle to draw the shape. The ValueStyle has 4 count of ValueItems which the item Id is from 0 to 3 and the item AreaStyle uses 4 different of fill colors. The shape also has a column value of 0 at the first time, the ValueStyle will use this value to draw the shape using corresponding AreaStyle.
 +
 +- In each update, the application will choose 1,600 count of features from all valid features randomly to modify their column values. The column value will be modified to 0, 1, 2 or 3 circularly.
 +
 +- The CustomLayerOverlay will be used in the update, the application will create a new InMemoryFeatureLayer and add it to this overlay when updating, all determined 1,600 count of features will be added to the layer. The previous overlay will be removed if it exists in the map, then a new overlay will be added to the map. Before removing the previous overlay, the all resources (include all layer tiles and background images) from the overlay will be drawn on a GeoImage, then set the GeoImage to the background image of the new overlay. We do this to make sure only 1,600 count of features would be rendered in each update, and the previous updated features would be displayed correctly in the map.
 +
 +- Customer can check or uncheck the layers in the right list of the application form, the application will only choose the features which in the checked layers when updating, and the unchecked layers will be hidden in the map.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​PerformanceSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​PerformanceSample-ForWpf| View this sample on Github]]
 +
 +==== Filter Style Sample for Wpf ====
 +
 +
 +This project outlines how to apply the FilterStyle to a layer'​s display. By using this style, the map will filter the features queried from the source file by checking if a specified column value fits the input condition. This effect can be applied to all the Map Suite products.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​FilterStyleSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​FilterStyleSample-ForWpf| View this sample on Github]]
 +
 +==== Delay Drawing Sample for Wpf ====
 +
 +This WPF project shows how to use the Delay Map Drawing feature to control whether or not the layer is redrawn after a specified delay. This option is very helpful for anyone wanting to do something before actually refreshing the map - such as editing the elements, adding an animation, etc. 
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DelayDrawingSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DelayDrawingSample-ForWpf| View this sample on Github]]
 +# Annotation Style Sample for Wpf
 +
 +### Description
 +
 +In this project you will see how to use the AnnotationStyle to display and edit a feature depending on the value of a specific property in its data source.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​AnnotationStyleSample-ForWpf/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +
 +```csharp
 +       
 +protected override void DrawCore(IEnumerable<​Feature>​ features, GeoCanvas canvas, Collection<​SimpleCandidate>​ labelsInThisLayer,​ Collection<​SimpleCandidate>​ labelsInAllLayers)
 +{
 +    foreach (var feature in features)
 +    {
 +        if (feature.GetWellKnownType() == WellKnownType.Line)
 +        {
 +            LineShape lineShape = (LineShape)feature.GetShape();​
 +            Feature newFeature = new Feature(lineShape.Vertices[0]);​
 +            newFeature.ColumnValues.Add(TextColumnName,​ feature.ColumnValues[TextColumnName]);​
 +            var labelingCandidates = GetLabelingCandidates(newFeature,​ canvas, Font, XOffsetInPixel,​ YOffsetInPixel,​ RotationAngle);​
 +            foreach (var labelingCandidate in labelingCandidates)
 +            {
 +                PolygonShape maskArea = ConvertPolygonShapeToWorldCoordinate(labelingCandidate.ScreenArea,​ canvas.CurrentWorldExtent,​ canvas.Width,​ canvas.Height);​
 +                PointShape closestPoint = maskArea.GetClosestPointTo(new PointShape(lineShape.Vertices[1]),​ canvas.MapUnit);​
 +                if (closestPoint != null)
 +                {
 +                    lineShape.Vertices[0] = new Vertex(closestPoint.X,​ closestPoint.Y);​
 +                    LeaderLineStyle.Draw(new LineShape[] { lineShape }, canvas, labelsInThisLayer,​ labelsInAllLayers);​
 +                }
 +
 +                DrawMask(labelingCandidate,​ canvas, labelsInThisLayer,​ labelsInAllLayers);​
 +
 +                foreach (LabelInformation labelInfo in labelingCandidate.LabelInformation)
 +                {
 +                    var textPathInScreen = new ScreenPointF((float)labelInfo.PositionInScreenCoordinates.X,​ (float)labelInfo.PositionInScreenCoordinates.Y);​
 +                    canvas.DrawText(labelInfo.Text,​ Font, TextBrush, HaloPen, new ScreenPointF[] { textPathInScreen }, DrawingLevel,​ 0, 0, DrawingTextAlignment.Default,​ (float)labelInfo.RotationAngle);​
 +                }
 +            }
 +        }
 +    }
 +}
 +
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Hello World Sample for Wpf ====
 +
 +This sample shows you how to get started building your first application with the Map Suite Desktop for Wpf 10.0.0.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​HelloWorldSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​HelloWorldSample-ForWpf| View this sample on Github]]
 +
 +==== Usgs Dem Sample for Wpf ====
 +
 +
 +This sample demonstrates how you can read data from an DEM file in your Map Suite GIS applications,​ and how to render it with DEM embedded value style as well as a customized style. This DEM File support would work in all of the Map Suite controls such as Wpf, Web, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​UsgsDemSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​UsgsDemSample-ForWpf| View this sample on Github]]
 +
 +==== Touch Events Sample for Wpf ====
 +
 +
 +This sample shows how to take advantage of touch screen to manipulate that map using one’s fingers. Learn how the map can be panned, zoomed in and out or rotated using two fingers. On addition, markers can be added, and shapes can be added and edited by tapping the screen. ​
 +
 +The sample code makes this straight forward to implement. ​
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​TouchEventsSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​TouchEventsSample-ForWpf| View this sample on Github]]
 +
 +==== Wmts Layer Sample for Wpf ====
 +
 +
 +This project shows how to consume data from a WMTS Server using WmtsLayer. You would find the code pretty straightforward,​ just like displaying a shapefile, while behind the scenes we request tiles from the server asynchronously and efficiently,​ and stitch them into a proper map. 
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​WmtsLayerSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​WmtsLayerSample-ForWpf| View this sample on Github]]
 +# Reproject Wmts Sample for Wpf
 +
 +### Description
 +In today’s project, we show how to create your own projection class that allows projecting a WMTS layer from any internal projection to any external. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​ReprojectWmtsSample-ForWpf/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +```csharp
 +wmtsLayer = new WmtsLayer();​
 +wmtsLayer.WmtsSeverEncodingType = ThinkGeo.MapSuite.Layers.WmtsSeverEncodingType.Kvp;​
 +wmtsLayer.ServerUris.Add(new Uri("​https://​basemap.nationalmap.gov/​arcgis/​rest/​services/​USGSImageryOnly/​MapServer/​WMTS"​));​
 +wmtsLayer.ActiveLayerName = "​USGSImageryOnly";​
 +wmtsLayer.ActiveStyleName = "​default";​
 +wmtsLayer.TileMatrixSetName = "​GoogleMapsCompatible";​
 +wmtsLayer.OutputFormat = "​image/​png";​
 +wmtsLayer.Projection = new Proj4Projection(3857,​ 4326);
 +wmtsLayer.ProjectedTileCache = new FileBitmapTileCache("​WmtsProjectedTileCache",​ "​USGSImageryOnly-4326"​);​
 +wmtsLayer.TileCache = new FileBitmapTileCache("​WmtsTileCache",​ "​USGSImageryOnly-3857"​);​
 +```
 +### Getting Help
 +
 +[Map Suite Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf)
 +
 +[Map Suite Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Earthquake Statistics Sample for Wpf ====
 +
 +The Earthquake Statistics sample template is a statistical report system for earthquakes that have occurred in the past few years across the United States. It can help you generate infographics and analyze the severely afflicted areas, or used as supporting evidence when recommending measures to minimize the damage in future quakes.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​EarthquakeStatisticsSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​EarthquakeStatisticsSample-ForWpf| View this sample on Github]]
 +
 +==== Show A Legend Sample for Wpf ====
 +
 +
 +In today’s project we learn how to display a simple legend using the new and improved LegendAdornmentLayer. The improved LegendAdornmentLayer was added to Map Suite 5.0 and provides an easy to use API for creating legend adornments. The LegendAdornmentLayer is part of Map Suite Core which allows you to access this powerful feature across all Map Suite products. ​
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ShowALegendSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ShowALegendSample-ForWpf| View this sample on Github]]
 +
 +==== Rotate Events Sample for Wpf ====
 +
 +
 +This sample shows how to take the advantage of a touchable screen, to play with the map using fingers. You would see we can pan the map with one finger, zoom in/out or rotate a map using 2 fingers. Not only that, we can add a marker, and track/edit a shape (point, line or polygons) by tapping on the screen. And marker/​popup/​label won't rotate with the map. It is straightforward to use and checking out the code, you would see it is very simple to implement with Map Suite! It is available in 8.0.48.0 or later. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​RotateEventsSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​RotateEventsSample-ForWpf| View this sample on Github]]
 +
 +==== MBTiles Extractor Sample for WPF ====
 +
 +
 +The MBTiles Extractor allows you to create new smaller subsets from the MBTiles database. You simply specify the bounding box by tracking a rectangle shape on the map for the new area, then it will create a new SQLite database for that regions. ​
 +
 +*.MBTile format can be supported in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](https://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MBTilesExtractorSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MBTilesExtractorSample-ForWpf| View this sample on Github]]
 +
 +==== Show A Legend Sample for Wpf ====
 +
 +
 +In today’s project we learn how to display a simple legend using the new and improved LegendAdornmentLayer. The improved LegendAdornmentLayer was added to Map Suite 5.0 and provides an easy to use API for creating legend adornments. The LegendAdornmentLayer is part of Map Suite Core which allows you to access this powerful feature across all Map Suite products. ​
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ShowALegendSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ShowALegendSample-ForWpf| View this sample on Github]]
 +
 +==== Draggable Labels Sample for Wpf ====
 +
 +
 +In this WPF project, you will learn how to place labels from a shapefile into a **SimpleMarkerOverlay**. Using the **DragMode** property of the **SimpleMarkerOverlay**,​ the user can then drag the labels to place them at the desired location for the most pleasing labeling effect. This project will be later completed to show how to save the state of the dragged labels from the **SimpleMarkerOverlay** and reload them.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DraggableLabelsSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DraggableLabelsSample-ForWpf| View this sample on Github]]
 +
 +==== Color Replacement Sample for Wpf ====
 +
 +In today’s WPF project, we show you how to replace a specific color in a raster image, with the advantage of new added API Color Mapping. For the example, in this project, the lake in Green can be replaced with blue.  ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ColorReplacementSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ColorReplacementSample-ForWpf| View this sample on Github]]
 +
 +==== Site Selection Sample for Wpf ====
 +
 +The Site Selection sample template allows you to view, understand, interpret, and visualize spatial data in many ways that reveal relationships,​ patterns, and trends. In the example illustrated,​ the user can apply the features of GIS to analyze spatial data to efficiently choose a suitable site for a new retail outlet.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​SiteSelectionSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​SiteSelectionSample-ForWpf| View this sample on Github]]
 +
 +==== Mini Map Sample for Wpf ====
 +
 +
 +This project shows how to create a simple mini map to give a reference of where you are when you zoomed in. As for the MiniMapAdormentLayer inherits from AdornmentLayer.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MiniMapSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MiniMapSample-ForWpf| View this sample on Github]]
 +
 +==== Magnetic Declination Sample for Wpf ====
 +
 +
 +In today'​s WPF project, we show you how to add the Magnetic Declination or Magnetic variation to the map, it's designed as an **AdormentLayer**,​ which is used for showing the angle on the horizontal plane between magnetic north (the direction in which the north end of a compass needle, corresponding to the direction of the Earth'​s magnetic field lines) and true north (the direction along a meridian towards the geographic North Pole). This angle varies depending on one's position on the Earth'​s surface, and over time. See
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MagneticDeclinationSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MagneticDeclinationSample-ForWpf| View this sample on Github]]
 +
 +==== Building 3D Sample for Wpf ====
 +
 +This project shows to create simulated 3D buildings on WPF map control and Shapefile.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​Building3DSample-forWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​Building3DSample-forWpf| View this sample on Github]]
 +
 +==== Friends Network Sample for Wpf ====
 +
 +
 +In this WPF project we show how you can create a friends network using a point with a circle symbol. It’s a combination of PointStyle and TextStyle, including a description with a mask that keeps the labels in the same layer. It was originally required by a customer at [http://​community.thinkgeo.com/​t/​label-on-a-circle-with-lot-of-points/​8193/​6](http://​community.thinkgeo.com/​t/​label-on-a-circle-with-lot-of-points/​8193/​6),​ it’s a solution with many applications.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​FriendsNetworkSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​FriendsNetworkSample-ForWpf| View this sample on Github]]
 +
 +==== Combine Overlay Sample for Wpf ====
 +
 +
 +In today’s Wpf project, we show a technique of using a common FeatureSource for two different Overlays. From a physical shapefile representing cities, a regular LayerOverlay is used for the higher zoom levels while a FeatureSourceMarkerOverlay is used for the lower zoom levels. FeatureSourceMarkerOverlay is a Wpf specific overlay offering features for a better user experience such a Tooltips and ImageSource. ​             ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​CombineOverlaySample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​CombineOverlaySample-ForWpf| View this sample on Github]]
 +
 +==== US Demographic Map Sample for Wpf ====
 +
 +The Demographic and Lifestyle sample template gives you a head start on your statistics project, which includes details about race, age, gender, land usage, and more for all the states in U.S. The template contains pre-styled layers that can be used as-is, or as the foundation for adding your own map notes and layers.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​USDemographicMapSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​USDemographicMapSample-ForWpf| View this sample on Github]]
 +
 +==== Elevation Statistics Sample for WPF ====
 +
 +This **Sample** ​  shows the elevation data of a road in the form of a line [chart][1].
 +
 +- **Elevation SDK** - support query elevation data by points, line and polygon based on [SRTM][2] and Ned13 elevation source data.
 + - **For point** - Create a buffer and aggregate all points within buffer to create average for the elevation of the point. ​
 + - **For line** - There are two ways to get the elevation data of the line. First, get the points on the line by setting the interval distance. The other, is to take the points by setting the number of points to be fetched. Then query the elevation data of the point.
 + - **For polygon** - By setting the interval distance, clip the polygon to the grids and get all the center of the grids where the polygon is located. Now, determine whether the center points are within the surface or inside the surface (use improved arc-length method).
 + 
 +{{https://​github.com/​ThinkGeo/​ElevationStatisticsSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +
 +[[https://​github.com/​ThinkGeo/​ElevationStatisticsSample-ForWpf| View this sample on Github]]
 +
 +==== Local Datum UTM Sample for Wpf ====
 +
 +
 +The purpose of this WPF sample is to get familiar with the concept of datum and datum shift in UTM and Geographic coordinates. Using local data, you might be required to apply datum transformation to your data to go from an old datum to a more recent datum. Here we are taking the example of Australia, which went to change its datum (from AGD84 to GDA94) for its mapping purposes. We show how to apply the datum transformation in both the longitude/​latitude coordinate system and in the local UTM systems (AMG based on AGD84 and MGA based on GD94). ​
 +
 +See the code and note the comments in the **MouseMove** event where all the projection logic is taken place. Notice that the correction is about 200 meters. Once you understand for the case for Australia, you will be able to apply the same principles for your own datums in UTM. 
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​LocalDatumUTMSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​LocalDatumUTMSample-ForWpf| View this sample on Github]]
 +
 +==== Multi Line Labeling Sample for Wpf ====
 +
 +
 +For labeling purpose, **TextStyle** has a property called LabelAllPolygonParts that will label all the parts making up a polygon based feature. Unfortunately,​ we don’t have an equivalent API for labeling all the parts of a line based feature. But thanks to the flexible framework of Map Suite, we show in this WPF sample how easily you can expand the **TextStyle** class to allow this labeling capability. Look at the custom class **MultiLinetextStyle** and how **DrawCore** function is overridden to have the expected labeling behavior.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MultiLineLabelingSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MultiLineLabelingSample-ForWpf| View this sample on Github]]
 +
 +==== Cluster Feature Layer Sample for Wpf ====
 +
 +The sample shows how to use ClusterFeatureLayer to render the specified column data as a pie chart. Allows users to compare data visually. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ClusterFeatureLayerSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ClusterFeatureLayerSample-ForWpf| View this sample on Github]]
 +
 +==== Google Map To Geodetic Sample for Wpf ====
 +
 +
 +In this Wpf project, we are showing a trick for getting the current extent of the map with Google Map as an image and displaying it on a map in decimal degrees unit. You may be in a situation where you want the details and accuracy of Google Map, especially the satellite view but want to have it displayed on your map in decimal degrees. In this sample, you will see how to get the Google Map image and create the accompanying world file for decimal degrees. Notice that we are realizing an affine transformation on the image to go to Geodetic as illustrated in the case 3
 +              ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​GoogleMapToGeodeticSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​GoogleMapToGeodeticSample-ForWpf| View this sample on Github]]
 +
 +==== GPS Exchange Format Feature Layer Sample for Wpf ====
 +
 +This sample demonstrates how to read GPS EXchange Format file(*.gpx) with Map Suite. GPX (GPS Exchange Format) is a light-weight XML data format for the interchange of GPS data (waypoints, routes, and tracks) between applications and Web services on the Internet, which you can find more information:​here. Now Map Suite supports the GPX 1.0 and 1.1 schema. This sample works with Map Suite development branch daily build 7.0.275.0 or later.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​GPSExchangeFormatFeatureLayerSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​GPSExchangeFormatFeatureLayerSample-ForWpf| View this sample on Github]]
 +
 +==== Dynamic Marker Overlay Sample for Wpf ====
 +
 +In today’s WPF project, we show you how to retrieve data from a REST service and display them as markers with different styles based on its attributes. You can click on any marker to call a WCF service which returns data from the server. A popup displays a chart with information. All the markers and related information are updated dynamically after a specific time interval.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DynamicMarkerOverlaySample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DynamicMarkerOverlaySample-ForWpf| View this sample on Github]]
 +# Print Preview Sample for Wpf
 +
 +### Description
 +In this sample we show you how to add robust printing support to your Map Suite applications for the WPF. Using the code in this sample, you'll be able to build a Print Preview interface that lets your users interactively arrange items (such as a map, scale line, labels, data grid or image) on a virtual page before printing the result to a printer, exporting to a bitmap image. Maps are printed using vector graphics so you can be sure the output will look great on anything.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​PrintPreviewSample-ForWpf.NETCore/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +```csharp
 +Map1.ZoomLevelSet = new PrinterZoomLevelSet(Map1.MapUnit,​ PrinterHelper.GetPointsPerGeographyUnit(Map1.MapUnit));​
 +
 +PrinterInteractiveOverlay printerOverlay = new PrinterInteractiveOverlay();​
 +
 +Map1.InteractiveOverlays.Add("​PrintPreviewOverlay",​ printerOverlay);​
 +Map1.InteractiveOverlays.MoveToBottom("​PrintPreviewOverlay"​);​
 +
 +PagePrinterLayer pagePrinterLayer = new PagePrinterLayer(PrinterPageSize.AnsiA,​ PrinterOrientation.Portrait);​
 +pagePrinterLayer.Open();​
 +printerOverlay.PrinterLayers.Add("​PageLayer",​ pagePrinterLayer);​
 +```
 +### Getting Help
 +
 +[Map Suite Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[Map Suite Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== ThinkGeo MBTiles Maps Sample for WPF ====
 +
 +
 +This sample demonstrates how you can draw the map with Vector Tiles saved in *.MBTiles in your Map Suite GIS applications,​ with any style you want from [StyleJSON (Mapping Defination Grammar)](https://​wiki.thinkgeo.com/​wiki/​thinkgeo_stylejson). It will show you how to use the XyzFileBitmapTileCache to improve the performance of map rendering. It supports have 3 built-in default map styles and more awasome styles from StyleJSON file you passed in, by '​Custom': ​
 +- Light
 +- Dark
 +- TransparentBackground
 +- Custom
 +
 +If you want the *.mbtile file of any area in the world, or you have any requirement of building *.mbtile file based on your own data, such as shape file, Oracle, MsSql and more, please contact support@thinkgeo.com.
 +
 +
 +*.MBTile format can be supported in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](https://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoMBTilesMapsSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoMBTilesMapsSample-ForWpf| View this sample on Github]]
 +
 +==== Four Color Map Sample for Wpf ====
 +
 +
 +Any map can be colored using four colors in such a way that adjacent regions receive different colors. ​
 +The sample discover how to use ShapeFileFeatureLayer to get four color features, then use ValueStyle to render the four color map.
 +
 +At present, the four color map only supports polygon, and doesn'​t support point and line. 
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​FourColorMapSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​FourColorMapSample-ForWpf| View this sample on Github]]
 +
 +==== Elevation Grade Of Line Sample for Wpf ====
 +
 +In this sample, we show how you can use Map Suite [Elevation SDK](https://​thinkgeo.com/​gisserver#​feature) to get the elevation values of a specific line for your .NET application. It allows you to customize your query to get data as detailed as you need it to be. Draw elevation profiles for your  hiking or biking trip, contral the granularity of the response, sample elevation values at controllable intervals along a route should be shown up.
 +
 +{{https://​github.com/​ThinkGeo/​ElevationGradeOfLineSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ElevationGradeOfLineSample-ForWpf| View this sample on Github]]
 +
 +==== Custom Parameters Projection Sample for Wpf ====
 +
 +
 +In today’s Wpf project, we learn more about projection and how to handle a special case where the projection information in the PRJ file of a shapefile is not found as an EPSG or ESRI code in the spatial reference web site (www.spatial-reference.org). The strategy in this case is to build a proj4 string based on the parameters found in the PRJ file. Note that you must pay special attention to the false easting or northing parameters as they are always expressed in meters even if the projection is in another unit such as feet. For this example, we show how to convert from the local projection in Lambert Conformal Conic with regional specific parameters to Geodetic (WGS84) to match the World Map Kit.
 +              ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​CustomParametersProjectionSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​CustomParametersProjectionSample-ForWpf| View this sample on Github]]
 +# Class Break Style Sample for Wpf
 +
 +### Description
 +
 +In this project you will see how to use the ClassBreakStyle to group and render features by values. ClassBreakStyle is a useful technique as it allows you to group various features by the specified values, then applies differently style to the feature groups. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​ClassBreakStyleSample-ForWpf.NETCore/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +Use a ClassBreakStyle to colorize each state differently depending on the range into which its population falls. ​ This value is found in the states ShapeFile DBF in the column named "​POP1990"​.
 +
 +```csharp
 +       
 +ClassBreakStyle statesStyle = new ClassBreakStyle("​POP1990"​);​
 +statesStyle.ClassBreaks.Add(
 +    new ClassBreak(value:​ 0, areaStyle: AreaStyles.CreateSimpleAreaStyle(
 +        fillBrushColor:​ GeoColors.LightGray,​
 +        outlinePenColor:​ GeoColors.DarkGray,​
 +        outlinePenWidth:​ 1)
 +    )
 +);
 +statesStyle.ClassBreaks.Add(
 +    new ClassBreak(value:​ 1000000, areaStyle: AreaStyles.CreateSimpleAreaStyle(
 +        fillBrushColor:​ GeoColors.LightBlue,​
 +        outlinePenColor:​ GeoColors.CornflowerBlue,​
 +        outlinePenWidth:​ 1)
 +    )
 +);
 +statesStyle.ClassBreaks.Add(
 +    new ClassBreak(value:​ 3500000, areaStyle: AreaStyles.CreateSimpleAreaStyle(
 +        fillBrushColor:​ GeoColors.SkyBlue,​
 +        outlinePenColor:​ GeoColors.DeepSkyBlue,​
 +        outlinePenWidth:​ 1)
 +    )
 +);
 +// Add stateStyle to the statesLayer and apply the style to all zoom levels.
 +statesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(statesStyle);​
 +statesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;​
 +
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Arc GIS Server Rest Layer Sample for WPF ====
 +
 +
 +In this wpf-based project, we'll demonstrate the new ArcGISServerRestLayer released with Map Suite 9.0. This layer gives developers a simple and powerful tool to access their maps that reside on ArcGIS Server. This new layer utilizes the [ArcGIS Server REST API](http://​resources.arcgis.com/​en/​help/​arcgis-rest-api/​). Now, the latest version of Map Suite Core can support that. In order to run this project, you will need the Development Build 9.0.443.0 or later.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ArcGISServerRestLayerSample-ForWPF/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ArcGISServerRestLayerSample-ForWPF| View this sample on Github]]
 +
 +==== Large Scale Map Printing Sample for Wpf ====
 +
 +
 +This WPF project is the second in our series of samples on printing. The
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​LargeScaleMapPrintingSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​LargeScaleMapPrintingSample-ForWpf| View this sample on Github]]
 +
 +==== Labeling Flight Lines Sample for Wpf ====
 +
 +This sample shows how to offset arc shaped flight lines so multiple from point to point are visible and then show popup labels providing information on the flights the lines represent.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​LabelingFlightLinesSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​LabelingFlightLinesSample-ForWpf| View this sample on Github]]
 +
 +==== Default Value Style Sample for Wpf ====
 +
 +
 +In today’s Wpf project, we demonstrate the extensibility of ThinkGeo API by creating a custom Style. Inheriting from **ValueStyle**,​ we create a Default Value Style that handles the drawing of features that don’t have a value defined in the **ValueStyle**. Here we are using a point based layer with **PointStyle**. Note that the Default **ValueStyle** would also work with line and polygon based layers.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DefaultValueStyleSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DefaultValueStyleSample-ForWpf| View this sample on Github]]
 +
 +==== Clipping On Line Layer Sample for Wpf ====
 +
 +This Wpf project completes the series of projects dedicated to the clipping geoprocessing. We already saw how to perform clipping on a polygon based layer in “Clipping” and on a point layer in “Clipping On Point Layer”. Here we show how to perform the clipping geopressing on a line based layer. As for the same operation on a polygon based layer, the key geometric function is GetIntersection. We will also appreciate the operation of creating a layer from scratch as in addition to the geometric operation itself, geoprocessing also involves creating a result layer from the original layers, the clipping layer and the clipped layer.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ClippingOnLineLayerSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ClippingOnLineLayerSample-ForWpf| View this sample on Github]]
 +
 +==== Graticule With Google Projection Sample for Wpf ====
 +
 +
 +In this Wpf project, we explore more features of the **GraticuleAdornmentLayer**,​ which shows meridians and parallels at various intervals based on the zoom level. Being natively in Geodetic, **GraticuleAdornmentLayer** can be set to any projection. In this project’s example, you have the graticule showing with World Map Kit in Spherical Mercator (Google Map projection). Also, note how easily you can change the appearance with properties such as **GraticuleLineStyle** and **GraticuleTextFont**.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​GraticuleWithGoogleProjectionSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​GraticuleWithGoogleProjectionSample-ForWpf| View this sample on Github]]
 +
 +==== Edit Attribute Of Shapefile Sample for Wpf ====
 +
 +
 +The purpose of this Wpf sample is to show how to edit the attributes of a feature of a shapefile. This sample is useful for anyone wanting to actualize the attributes part of its data by simply clicking on the desired feature on the map and updating its attributes in a textbox. You will find the editing part of the code in the **KeyDown** event of the textbox.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​EditAttributeOfShapefileSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​EditAttributeOfShapefileSample-ForWpf| View this sample on Github]]
 +
 +==== Display Oracle Data Sample for Wpf ====
 +
 +
 +Discover how to use OracleFeatureLayer to build up your map. Use oracle data to render map.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DisplayOracleDataSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DisplayOracleDataSample-ForWpf| View this sample on Github]]
 +
 +==== Adjacent Road Search Sample for Wpf ====
 +
 +
 +This WPF project shows how to get a route between two adjacent roads, even if they don't intersect within an allowable tolerance. ​
 +
 +It’s based on Map Suite Geometry Topology module and does not require the Map Suite Routing Extension.  ​
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​AdjacentRoadSearchSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​AdjacentRoadSearchSample-ForWpf| View this sample on Github]]
 +
 +==== NOAA Globel Weather Station Layer Sample for Wpf ====
 +
 +
 +This WPF project, demonstrates how to query and display real time NOAA weather station data directly as a **Layer**, which allows you to display up-to-date weather station data from around the world on top of your maps. The weather station data is sourced from NOAA and is refreshed every 15 minutes in the background. As these classes are inherited from the **FeatureSource** and **FeatureLayer**,​ many properties are querable and can be used to create a variety of maps or analysis of current weather patterns. This feature can be applied in all Map Suite products. ​            
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​NOAAGlobelWeatherStationLayerSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​NOAAGlobelWeatherStationLayerSample-ForWpf| View this sample on Github]]
 +
 +==== SQLite Bitmap Tile Cache Sample for Wpf ====
 +
 +
 +This sample shows how you can cache the tile images in SQLite database.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​SQLiteBitmapTileCacheSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​SQLiteBitmapTileCacheSample-ForWpf| View this sample on Github]]
 +
 +==== Wmts Tiled Overlay Sample for Wpf ====
 +
 +
 +This project shows how to consume data from a WMTS Server using WmtsOverlay. You would find the code pretty straightforward,​ while behind the scenes we request tiles from the server asynchronously and efficiently,​ and stitch them into a proper map.  This class is introduced from version 6.0.187.0, besides this WmtsOverlay,​ we also have WmtsLayer available.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​WmtsTiledOverlaySample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​WmtsTiledOverlaySample-ForWpf| View this sample on Github]]
 +
 +==== Display File GeoDatabase Sample for Wpf ====
 +
 +
 +This sample demonstrates how you can read data from an ESRI FileGeodatabase,​ and you will find the code as straightforward as consuming any other data source in Map Suite.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DisplayFileGeoDatabaseSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DisplayFileGeoDatabaseSample-ForWpf| View this sample on Github]]
 +
 +==== Multiple Dot Density Styles Sample for Wpf ====
 +
 +
 +This sample takes a detailed look at the **DotDensityStyle**. You can combine different **DotDensityStyles** on one FeatureLayer using different columns. Demographic data are usually well fit to be used with that type of style. Here each dot of a certain color represents 100,000 persons of the same age group by state. Using multiple **DotDensityStyles**,​ the dimension of age group demographics is added to the representation of population density. ​
 +
 +Note that the **PointToValueRatio** is used to set how many people a dot is going to represent. For example, if you want a dot to represent 100,000 persons, you set it to 0.00001 (1 / 100000). If you want it to be 500,000 persons, you set it to 0.000002 (1 / 500000).
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MultipleDotDensityStylesSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MultipleDotDensityStylesSample-ForWpf| View this sample on Github]]
 +
 +==== BackgroundMapSwitchingSample-ForWpf ====
 +
 +This sample shows you how to use these four different types of maps as background in Map Suite Desktop (WPF) Edition. ​
 + - **ThinkGeo Cloud Maps**
 + - **Open Street Map**
 + - **Bing Maps**
 + - **Google Maps**
 +
 +{{https://​github.com/​ThinkGeo/​BackgroundMapSwitchingSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​BackgroundMapSwitchingSample-ForWpf| View this sample on Github]]
 +
 +==== Highlight At Mouse Hover Sample for Wpf ====
 +
 +
 +In this WPF project, we show you how to highlight a feature when the user hovers the mouse pointer over it. This effect can be realized in Map Suite by using a timer and doing some spatial querying based on the location of the mouse pointer. This sample works with area-based features but the same could be accomplished with point- or line-based features simply by using different spatial queries.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​HighlightAtMouseHoverSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​HighlightAtMouseHoverSample-ForWpf| View this sample on Github]]
 +# Cluster Point Sample for Wpf
 +
 +### Description
 +
 +ClusterPointStyle is integrated into ThinkGeo'​s styles. In this project you will see how to use the ClusterPointStyle for clustering various features into one. Sometimes, the map may have too many features which are stacked on top of each other making the map illegible at higher zoom levels. Clustering is a useful technique as it allows you to group together various features into one labeled symbol with the count of all the features. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​ClusterPointSample-ForWpf.NETCore/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +```csharp
 +ClusterPointStyle clusterPointStyle = new ClusterPointStyle();​
 +clusterPointStyle.MinimumFeaturesPerCellToCluster = 1;
 +clusterPointStyle.DefaultTextStyle = TextStyle.CreateSimpleTextStyle("​FeatureCount",​ "​Arail",​ 10, 
 +                                                         ​DrawingFontStyles.Regular,​ GeoColors.Black);​
 +clusterPointStyle.DefaultTextStyle.TextPlacement = TextPlacement.Center;​
 +clusterPointStyle.DefaultTextStyle.OverlappingRule = LabelOverlappingRule.AllowOverlapping;​
 +clusterPointStyle.DrawingClusteredFeature += ClusterPointStyle_DrawingClusteredFeature;​
 +
 +private void ClusterPointStyle_DrawingClusteredFeature(object sender, ​
 +   ​DrawingClusteredFeatureClusterPointStyleEventArgs e)
 +{
 +    classBreakStyle = classBreakStyle ?? GetClassBreakStyle("​FeatureCount"​);​
 +    e.Styles.Add(classBreakStyle);​
 +}
 +
 +private ClassBreakStyle GetClassBreakStyle(string columnName)
 +{
 +    ClassBreakStyle classBreakStyle = new ClassBreakStyle();​
 +    classBreakStyle.ColumnName = columnName;
 +
 +    PointStyle pointStyle1 = new PointStyle(PointSymbolType.Circle,​ 8, 
 +                                            new GeoSolidBrush(GeoColor.FromArgb(250,​ 100, 200, 100)),
 +                                            new GeoPen(GeoColor.FromArgb(100,​120,​ 200, 120), 5));
 +    classBreakStyle.ClassBreaks.Add(new ClassBreak(1,​ pointStyle1));​
 +
 +    PointStyle pointStyle2 = new PointStyle(PointSymbolType.Circle,​ 15, 
 +                                            new GeoSolidBrush(GeoColor.FromArgb(250,​ 222, 226, 153)), ​
 +                                            new GeoPen(GeoColor.FromArgb(100 222, 226, 153), 8));
 +    classBreakStyle.ClassBreaks.Add(new ClassBreak(2,​ pointStyle2));​
 +
 +    PointStyle pointStyle3 = new PointStyle(PointSymbolType.Circle,​ 25, 
 +                                            new GeoSolidBrush(GeoColor.FromArgb(250,​ 255, 183, 76)),
 +                                            new GeoPen(GeoColor.FromArgb(100,​255,​ 183, 76), 10));
 +    classBreakStyle.ClassBreaks.Add(new ClassBreak(5,​ pointStyle3));​
 +
 +    PointStyle pointStyle4 = new PointStyle(PointSymbolType.Circle,​ 35, 
 +                                            new GeoSolidBrush(GeoColor.FromArgb(250,​ 243, 193, 26)),
 +                                            new GeoPen(GeoColor.FromArgb(100,​243,​ 193, 26), 15));
 +    classBreakStyle.ClassBreaks.Add(new ClassBreak(10,​ pointStyle4));​
 +
 +    PointStyle pointStyle5 = new PointStyle(PointSymbolType.Circle,​ 40, 
 +                                            new GeoSolidBrush(GeoColor.FromArgb(250,​ 245, 7, 10)),
 +                                            new GeoPen(GeoColor.FromArgb(100,​245,​ 7, 10), 15));
 +    classBreakStyle.ClassBreaks.Add(new ClassBreak(100,​ pointStyle5));​
 +
 +    PointStyle pointStyle6 = new PointStyle(PointSymbolType.Circle,​ 50, 
 +                                            new GeoSolidBrush(GeoColor.FromArgb(250,​ 245, 7, 10)),
 +                                            new GeoPen(GeoColor.FromArgb(100,​245,​ 7, 10), 20));
 +    classBreakStyle.ClassBreaks.Add(new ClassBreak(500,​ pointStyle6));​
 +
 +    return classBreakStyle;​
 +}
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Mask Raster Layer Sample for Wpf ====
 +
 +This sample shows how to use GeoTiff raster layer to mask the background map and allows users to draw a polygon shape in order to only show the raster image which is covered by the polygon. The rendering logic can be applied to other RasterLayers by overwriting DrawCore method. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MaskRasterLayerSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MaskRasterLayerSample-ForWpf| View this sample on Github]]
 +# Weather Line Style Sample for Wpf
 +
 +### Description
 +
 +In this WPF sample, we learn how to extend **LineStyle** class to create a style for representing weather fronts, such as cold front, warm front, or occluded front for your weather maps. To achieve that styling a regular **LineStyle** is used for the front line itself. For symbolizing the type of front an icon is used.
 +
 +Notice the two handy properties to give you more control: Spacing property to adjust the distance in screen coordinate between each symbol on the line, and Side property to control on what side of the line front the symbols should appear. Of course, as you zoom in and out on the map the spacing between each symbol remain the same as it is set in screen coordinate.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​WeatherLineStyleSample-ForWpf.NETCore/​blob/​master/​ScreenShot.png)
 +
 +### About the Code
 +```csharp
 +class customGeoImageLineStyle : LineStyle
 +{
 +    protected override void DrawCore(IEnumerable<​Feature>​ features, GeoCanvas canvas, ​
 +             ​System.Collections.ObjectModel.Collection<​SimpleCandidate>​ labelsInThisLayer,​
 +             ​System.Collections.ObjectModel.Collection<​SimpleCandidate>​ labelsInAllLayers)
 +    {
 +       ​PointStyle pointStyle = new PointStyle(geoImage);​
 +       ​foreach (Feature feature in features)
 +        {
 +            LineShape lineShape = (LineShape)feature.GetShape();​
 +            lineStyle.Draw(new BaseShape[] { lineShape }, canvas, labelsInThisLayer,​ labelsInAllLayers);​
 +            double totalDist = 0;
 +            for (int i = 0; i < lineShape.Vertices.Count - 1; i++)
 +            {
 +                PointShape pointShape1 = new PointShape(lineShape.Vertices[i]);​
 +                PointShape pointShape2 = new PointShape(lineShape.Vertices[i + 1]);
 +
 +                LineShape tempLineShape = new LineShape();​
 +                tempLineShape.Vertices.Add(lineShape.Vertices[i]);​
 +                tempLineShape.Vertices.Add(lineShape.Vertices[i + 1]);
 +                double angle = GetAngleFromTwoVertices(lineShape.Vertices[i],​ lineShape.Vertices[i + 1]);
 +
 +                if (side == SymbolSide.Left)
 +                    if (angle >= 270) { angle = angle - 180; }
 +                else
 +                    if (angle <= 90) { angle = angle + 180; }
 +                ​
 +                pointStyle.RotationAngle = (float)angle;​
 +
 +                float screenDist = ExtentHelper.GetScreenDistanceBetweenTwoWorldPoints(
 +                            canvas.CurrentWorldExtent,​pointShape1,​ pointShape2,​ canvas.Width,​ canvas.Height);​
 +                double currentDist = Math.Round(pointShape1.GetDistanceTo(pointShape2,​ canvas.MapUnit,​
 +                                                                          DistanceUnit.Meter),​ 2);
 +                double worldInterval = (currentDist * spacing) / screenDist;
 +
 +                while (totalDist <= currentDist)
 +                {
 +                    PointShape tempPointShape = tempLineShape.GetPointOnALine(StartingPoint.FirstPoint,​
 +                                                              totalDist, canvas.MapUnit,​ DistanceUnit.Meter);​
 +                    pointStyle.Draw(new BaseShape[] { tempPointShape }, canvas,
 +                                                                       ​labelsInThisLayer,​ labelsInAllLayers);​
 +                    totalDist = totalDist + worldInterval;​
 +                }
 +                totalDist = totalDist - currentDist;​
 +             }
 +        }
 +    }
 +}
 +```
 +### Getting Help
 +
 +[Map Suite Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[Map Suite Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Tracked Shapes To File Sample for Wpf ====
 +
 +
 +In this Wpf sample, we show how to persist the tracked shapes by saving the WKT (Well Known Text) to a file using the TrackEnded event. Also, you can see how to retrieve the WKT from files to create the features for the TrackShapeLayer of the TrackOverlay when loading the map. You will need the MapSuiteCore.dll and WpfDesktopEdition.dll references for this sample.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​TrackedShapesToFileSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​TrackedShapesToFileSample-ForWpf| View this sample on Github]]
 +
 +==== Save Load State Sample for Wpf ====
 +
 +
 +The purpose of this Wpf project is to show how to use the new SaveState and LoadState of the SimpleMarkerOverlay. We show how you can simply drag the icons to change their location, save their state to a file and then reload the state from that file. For this sample to work, you will need to use the latest
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​SaveLoadStateSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​SaveLoadStateSample-ForWpf| View this sample on Github]]
 +
 +==== Snap To Layer Sample for Wpf ====
 +
 +The purpose of this Wpf project is to address some limitations of the class SnapToLayerEditInteractiveOverlay found in a previous sample Snap To Layer.  ​
 +
 +This class allowed the snapping of the mouse pointer to the closest vertex of a polygon if it is within a set tolerance. While this worked great for simple polygons, there was a performance limitation with complex polygons made of many vertices. This Wpf sample addresses this limitation and allows responsive dragging and snapping of vertex regardless of the size of polygon to snap to.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​SnapToLayerSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​SnapToLayerSample-ForWpf| View this sample on Github]]
 +# MBTiles Extractor Sample for WPF
 +
 +### Description
 +
 +The MBTiles Extractor allows you to create new smaller subsets from the MBTiles database. You simply specify the bounding box by tracking a rectangle shape on the map for the new area, then it will create a new SQLite database for that regions. ​
 +
 +*.MBTile format can be supported in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](https://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​MBTilesExtractorSample-ForWpf.NETCore/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +The sample can extract MBTiles from source database to target database. One thing needs to be aware of: there are three tables ("​map","​images","​metadata"​) need to be copied from source database to target database.
 +```csharp
 +ThinkGeoMBTilesLayer.CreateDatabase(targetFilePath);​
 +var targetDBConnection = new SqliteConnection($"​Data Source={targetFilePath}"​);​
 +var targetMap = new Map(targetDBConnection);​
 +var targetImages = new Images(targetDBConnection);​
 +var targetMetadata = new Metadata(targetDBConnection);​
 +
 +var sourceDBConnection = new SqliteConnection("​Data Source=Data/​tiles_Frisco.mbtiles"​);​
 +var sourceMap = new Map(sourceDBConnection);​
 +var sourceImages = new Images(sourceDBConnection);​
 +var sourceMetadata = new Metadata(sourceDBConnection);​
 +
 +sourceMetadata.NextPage();​
 +foreach (MetadataEntry entry in sourceMetadata.Entries)
 +{
 +    if (entry.Name.Equals("​center"​))
 +    {
 +        PointShape centerPoint = projection.ConvertToExternalProjection(bbox).GetCenterPoint();​
 +        entry.Value = $"​{centerPoint.X},​{centerPoint.Y},​{maxZoom}";​
 +    }
 +}
 +targetMetadata.Insert(sourceMetadata.Entries);​
 +
 +int recordLimit = 1000;
 +foreach (var tileRange in tileRanges)
 +{
 +    long offset = 0;
 +    bool isEnd = false;
 +    while (!isEnd)
 +    {
 +        string querySql = $"​SELECT * FROM {sourceMap.TableName} WHERE " + ConvetToSqlString(tileRange) ​
 +                            + $" LIMIT {offset},​{recordLimit}";​
 +        var entries = sourceMap.Query(querySql);​
 +        targetMap.Insert(entries);​
 +
 +        if (entries.Count < recordLimit)
 +            isEnd = true;
 +
 +        querySql = $"​SELECT images.tile_data as tile_data, images.tile_id as tile_id FROM {sourceImages.TableName} "
 +                    + $WHERE images.tile_id IN ( SELECT {Map.TileIdColumnName} FROM {sourceMap.TableName} WHERE "
 +                    + ConvetToSqlString(tileRange) + $" LIMIT {offset},​{recordLimit} )";
 +        entries = sourceImages.Query(querySql);​
 +        targetImages.Insert(entries);​
 +
 +        offset = offset + recordLimit;​
 +    }
 +}
 +```
 +### Getting Help
 +
 +[Map Suite UI Control for WPF Wiki Resources](https://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[Map Suite UI Control for WPF Product Description](https://​thinkgeo.com/​gis-ui-desktop#​platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Weather Line Style Sample for Wpf ====
 +
 +
 +In this WPF sample, we learn how to extend **LineStyle** class to create a style for representing weather fronts, such as cold front, warm front, or occluded front for your weather maps. To achieve that styling a regular **LineStyle** is used for the front line itself. For symbolizing the type of front an icon is used. 
 +
 +Notice the two handy properties to give you more control: Spacing property to adjust the distance in screen coordinate between each symbol on the line, and Side property to control on what side of the line front the symbols should appear. Of course, as you zoom in and out on the map the spacing between each symbol remain the same as it is set in screen coordinate. ​             ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​WeatherLineStyleSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​WeatherLineStyleSample-ForWpf| View this sample on Github]]
 +
 +==== Display MsSql GeoDatabase Sample for Wpf ====
 +
 +
 +This sample demonstrates how you can read data from an MsSql database, and you will find the code as straightforward as consuming any other data source in Map Suite.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DisplayMsSqlDatabaseSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DisplayMsSqlDatabaseSample-ForWpf| View this sample on Github]]
 +
 +==== Use Wpf Map Control Sample for WinForms ====
 +
 +
 +The wpf map control supports multi-thread to render map, so it performs better than winforms map control. This sample demonstrates how you can use wpf map control in your winforms applications. ​
 +
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​UseWpfMapControlSample-ForWinforms/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​UseWpfMapControlSample-ForWinforms| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Color Sample for Wpf ====
 +
 +
 +This sample demonstrates how you can use ThinkGeo Cloud Client to get colors from ThinkGeo GIS Server. It supports 7 different colors: ​
 +- Hue
 +- Quality
 +- Analogous
 +- Complementary
 +- Contrasting
 +- Tetradic
 +- Triadic
 +
 +ThinkGeo Cloud Client support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudColorSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudColorSample-ForWpf| View this sample on Github]]
 +
 +==== Print Popup And Marker Sample for Wpf ====
 +
 +
 +Popup and marker need to use click events etc, so they inherit Control class. SimpleMarkerOverlay and PopupOverlay can't be printed directly, and They need to be converted to image. This sample demonstrates how to print popup and marker by PrinterGeoCanvas. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​PrintPopupAndMarkerSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​PrintPopupAndMarkerSample-ForWpf| View this sample on Github]]
 +
 +==== Raster Layer Print Quality Sample for Wpf ====
 +
 +This WPF project is the 3rd sample on the printing series. It demonstrates how to print your maps in high quality. This new feature for Map Suite is available in version 9.0.483.0 or later. From the sample you will better understand how to use DPI for handling print quality. The sample is based on raster images, but could also be used with vector data.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​RasterLayerPrintQualitySample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​RasterLayerPrintQualitySample-ForWpf| View this sample on Github]]
 +
 +==== Custom Rotation Projection Sample for Wpf ====
 +
 +In today’s project, we show how to create your own projection class that allows projecting a layer from any internal projection to any external while doing a rotation at the same time. Having the capability to apply those two operations in one step may come handy if the original layer was created in a different projection with the north at an angle and you want to align it on the base map.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​CustomRotationProjectionSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​CustomRotationProjectionSample-ForWpf| View this sample on Github]]
 +
 +==== Centering And Rotating Sample for Wpf ====
 +
 +
 +This project is the Wpf version of the services edition sample “Centering and Rotating On Moving Feature”, where we learn how to have the map always centered and rotated based on the location and direction of a moving vehicle. This issues addresses some issues you have to be aware of regarding both ShapeFileFeatureLayer and InMemoryFeatureLayer when applying rotation to the map.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​CenteringAndRotatingSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​CenteringAndRotatingSample-ForWpf| View this sample on Github]]
 +# Class Break Style Sample for Wpf
 +
 +### Description
 +
 +In this project you will see how to use the ClassBreakStyle to group and render features by values. ClassBreakStyle is a useful technique as it allows you to group various features by the specified values, then applies differently style to the feature groups. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​ClassBreakStyleSample-ForWpf/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +Use a ClassBreakStyle to colorize each state differently depending on the range into which its population falls. ​ This value is found in the states ShapeFile DBF in the column named "​POP1990"​.
 +
 +```csharp
 +       
 +ClassBreakStyle statesStyle = new ClassBreakStyle("​POP1990"​);​
 +statesStyle.ClassBreaks.Add(
 +    new ClassBreak(value:​ 0, areaStyle: AreaStyles.CreateSimpleAreaStyle(
 +        fillBrushColor:​ GeoColors.LightGray,​
 +        outlinePenColor:​ GeoColors.DarkGray,​
 +        outlinePenWidth:​ 1)
 +    )
 +);
 +statesStyle.ClassBreaks.Add(
 +    new ClassBreak(value:​ 1000000, areaStyle: AreaStyles.CreateSimpleAreaStyle(
 +        fillBrushColor:​ GeoColors.LightBlue,​
 +        outlinePenColor:​ GeoColors.CornflowerBlue,​
 +        outlinePenWidth:​ 1)
 +    )
 +);
 +statesStyle.ClassBreaks.Add(
 +    new ClassBreak(value:​ 3500000, areaStyle: AreaStyles.CreateSimpleAreaStyle(
 +        fillBrushColor:​ GeoColors.SkyBlue,​
 +        outlinePenColor:​ GeoColors.DeepSkyBlue,​
 +        outlinePenWidth:​ 1)
 +    )
 +);
 +// Add stateStyle to the statesLayer and apply the style to all zoom levels.
 +statesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(statesStyle);​
 +statesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;​
 +
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Wrap Dateline Mode Sample for Wpf ====
 +
 +
 +In this Wpf project, we show a new property of Overlay, WrapDatelineMode. This property that allows to continuously pan west or east with world map was already available in the dev branch. This concept was shown in the previous sample “WrapDatelineMode”. Now it is fully supported in Map Suite 5 and you can see in this sample how the behavior for the map in both Decimal Degrees (Lat/Long) and Spherical Mercator (Google Map/Bing map projection). In order to run this sample, you will need the latest release for Wpf with references to MapSuiteCore.dll and WpfDesktopEdition.dll.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​WrapDatelineModeSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​WrapDatelineModeSample-ForWpf| View this sample on Github]]
 +
 +==== Map Loading Progress Sample for Wpf ====
 +
 +
 +Discover how to use progress bar to show the LayerOverlay rendering progress. The project is simple and meant to show only the basic logic; to extend it, you could add some other information or a loading image instead of a progress bar.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MapLoadingProgressSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MapLoadingProgressSample-ForWpf| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Geocoding Sample for Wpf ====
 +
 +
 +This **Sample** ​ demonstrates how you can use ThinkGeo Cloud Client to get a geographic location from ThinkGeo GIS Server by a street address. ​
 +
 +ThinkGeo Cloud Client support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudGeocodingSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudGeocodingSample-ForWpf| View this sample on Github]]
 +
 +==== Select And Drag Feature Sample for Wpf ====
 +
 +
 +In this Wpf project, we show how to select a feature from a shapefile based on a column value using the GetFeaturesByColumnValue. We also show to setup the EditOverlay to give the user the ability to drag the selected feature. In this project, you can also see how to get the world coordinates at the mouse move event. Notice that the code for doing this is quite different in Wpf compared to the winforms edition.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​SelectAndDragFeatureSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​SelectAndDragFeatureSample-ForWpf| View this sample on Github]]
 +# Cad Viewer Sample for Wpf
 +
 +### Description
 +
 +This sample demonstrates how you can read data from an CAD file(*.dwg, *.dxf) in your Map Suite GIS applications,​ and how to render it with CAD embedded style as well as a customized style. This Cad File support would work in all of the Map Suite controls such as Wpf, Web, MVC and WebApi. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​CadViewerSample-ForWpf.NETCore/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +```csharp
 +CadFeatureLayer layer = new CadFeatureLayer(@"​AppData\"​ + sampleFileListBox.SelectedItem.ToString());​
 +layer.StylingType = CadStylingType.StandardStyling;​
 +layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.SimpleColors.Black,​ 2, true);
 +layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle,​ GeoColor.SimpleColors.Blue,​ 8);
 +layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Yellow);​
 +layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;​
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +# Image Style Sample for Wpf
 +
 +### Description
 +As you probably already know, using the Map Suite API, you can easily display a point-based feature as an image. But how do you do the same thing for a line or a polygon-based feature? In this WPF project, we show you how to create custom Image Styles for both line and polygon features. With the new ImageAreaStyle,​ you can display a polygon feature that uses an image as its fill. You can see how an image for forest and water is used in the sample project. And with the new ImageLineStyle,​ you can do the same thing with line features. You'll see how an image of a pavement texture is used to represent streets.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​ImageStyleSample-ForWpf.NETCore/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +```csharp
 +[Serializable]
 +class ImageAreaStyle : Style
 +{
 +    private GeoImage geoImage = null;
 +
 +    public ImageAreaStyle(GeoImage geoImage)
 +    {
 +        this.geoImage = geoImage;
 +    }
 +
 +    protected override void DrawCore(IEnumerable<​Feature>​ features, GeoCanvas canvas, ​
 +              Collection<​SimpleCandidate>​ labelsInThisLayer,​ Collection<​SimpleCandidate>​ labelsInAllLayers)
 +    {
 +        // Loop through all of the features being passed in to draw.
 +        foreach (Feature feature in features)
 +        {
 +            WellKnownType shapeWellKnownType = feature.GetWellKnownType();​
 +            if (shapeWellKnownType == WellKnownType.Polygon)
 +            {
 +                PolygonShape polygonShape = new PolygonShape(feature.GetWellKnownBinary());​
 +                canvas.DrawArea(polygonShape,​ new GeoTextureBrush(geoImage),​ DrawingLevel.LevelOne);​
 +            }
 +            else if (shapeWellKnownType == WellKnownType.Multipolygon)
 +            {
 +                MultipolygonShape multiPolygonShape = new MultipolygonShape(feature.GetWellKnownBinary());​
 +                canvas.DrawArea(multiPolygonShape,​ new GeoTextureBrush(geoImage),​ DrawingLevel.LevelOne);​
 +            }
 +        }
 +    }
 +}
 +```
 +### Getting Help
 +
 +[Map Suite Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[Map Suite Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +# Earthquake Statistics Sample for Wpf
 +
 +### Description
 +The Earthquake Statistics sample template is a statistical report system for earthquakes that have occurred in the past few years across the United States. It can help you generate infographics and analyze the severely afflicted areas, or used as supporting evidence when recommending measures to minimize the damage in future quakes.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​EarthquakeStatisticsSample-ForWpf.NETCore/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +```csharp
 +GridInterpolationModel interpolationModel = new InverseDistanceWeightedGridInterpolationModel(3,​ double.MaxValue);​
 +isoLineLayer = new DynamicIsoLineLayer(dataPoints,​ IsoLineLayer.GetIsoLineLevels(dataPoints.Values,​ 12), 
 +                                       ​interpolationModel,​ IsoLineType.ClosedLinesAsPolygons);​
 +
 +IsoLineLayer.GetIsoLineLevels(dataPoints,​ 12);
 +
 +levelClassBreakStyle = new ClassBreakStyle(isoLineLayer.DataValueColumnName);​
 +levelClassBreakStyle.ClassBreaks.Add(new ClassBreak(double.MinValue, ​
 +                                     new AreaStyle(new GeoPen(GeoColor.FromHtml("#​FE6B06"​),​ 1), 
 +                                     new GeoSolidBrush(new GeoColor(100,​ levelAreaColors[0])))));​
 +```
 +### Getting Help
 +
 +[Map Suite Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[Map Suite Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== ThinkGeo Cloud Elevation Sample for Wpf ====
 +
 +
 +This **Sample** ​ demonstrates how you can use ThinkGeo Cloud Client to get elevation data from ThinkGeo GIS Server, and shows the elevation data of a road in the form of a line chart.
 +
 +There are two ways to get the elevation data of the line. First, get the points on the line by setting the interval distance. The other, is to take the points by setting the number of points to be fetched. Then query the elevation data of the point.
 +
 +ThinkGeo Cloud Client support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudElevationSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudElevationSample-ForWpf| View this sample on Github]]
 +
 +==== Find Nearest Cross Streets Sample for Wpf ====
 +
 +
 +This sample demonstrates how to geocode an address using Map Suite Geocoder. It then returns and highlights the low and high cross streets. ​         ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​FindNearestCrossStreetsSample-ForWpf/​raw/​master/​ScreenShot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​FindNearestCrossStreetsSample-ForWpf| View this sample on Github]]
 +
 +==== Spatial Query With ThinkGeo Cloud Vector Maps Sample for Wpf ====
 +
 +
 +This sample demonstrates how you can query the features of Vector Tiles requested from ThinkGeo Cloud Services in your Map Suite GIS applications,​ such as searching the nearest places to your clicked place or the roads in the area with a specific distance you specified. ​
 +
 +ThinkGeo Cloud Vector Maps support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](https://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​SpatialQueryThinkGeoVectorMapsSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​SpatialQueryThinkGeoVectorMapsSample-ForWpf| View this sample on Github]]
 +
 +==== Find Shortest Line And Splitting Lines Sample for Wpf ====
 +
 +
 +This sample will show you how to find the closest line between two features by using the GetShortestLineTo API and how to split a line at a given point using the GetLineOnALine API. These APIs can be very useful when doing spatial analysis and editing of features. This sample also allows you to dynamically alter the test features using the EditOverlay so you can try out different scenarios and see the results quickly. A MapShapes layer is used to display and style the individual results. ​        
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​FindShortestLineAndSplittingLinesSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​FindShortestLineAndSplittingLinesSample-ForWpf| View this sample on Github]]
 +
 +==== Polygon Shapes To Multipolygon Shape Sample for Wpf ====
 +
 +
 +In this Wpf project, we show how to create a MultipolygonShape from various PolygonShapes. Since a collection of PolygonShapes cannot be directly cast to a MultipolygonShape,​ we show the technique to build a MultipolygonShape passing an IEnumerable of PolygonShape. This is a Wpf sample and you will need the references for MapSuiteCore.dll and WpfDesktopEdition.dll.
 +              ​
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​PolygonShapesToMultipolygonShapeSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​PolygonShapesToMultipolygonShapeSample-ForWpf| View this sample on Github]]
 +
 +==== World Map Kit Data Extractor Sample for Wpf ====
 +
 +
 +The World Map Kit Data Extractor allows you to create new smaller subsets from the World Map Kit SQLite master database. You simply specify the bounding box (or a shape file) for the new area then it will create a new SQLite database for that regions. There are options to preserve high level data allowing you to keep higher extent features, about 700 meg of data, such as the world, countries, high level roads etc. as a backdrop to the cut out area. If you choose not to preserve the high level data the tool crosscuts every layer leaving you with the smallest dataset possible. The tool works with multiple projections but does not re-project. Specifying the srid allows you to configure your bounding box in decimal degrees regardless of the source database projection. We will consider enhancing the tool to support projection based on feedback.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​WorldMapKitDataExtractorSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​WorldMapKitDataExtractorSample-ForWpf| View this sample on Github]]
 +
 +==== Connecting Two Shapes With Arraw Line Sample for Wpf ====
 +
 +
 +In this sample, two polygons are connected by a arrowline, and if the polygons are moved the connecting arrowline will be moved automatically as well.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ConnectingTwoShapesWithArrawLineSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ConnectingTwoShapesWithArrawLineSample-ForWpf| View this sample on Github]]
 +
 +==== Multiple Jpeg2000 Raster Layer Sample for Wpf ====
 +
 +
 +This sample shows how to create a customized raster layer for loading multiple files. In this project, we create the MultipleJpeg2000RasterLayer to inherit from Layer to load multiple .jp2 files. You can use the world files or a RectangleShape which is the extent of the image in world coordinate.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​MultipleJpeg2000RasterLayerSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​MultipleJpeg2000RasterLayerSample-ForWpf| View this sample on Github]]
 +# Use Custom Font Symbol With PointStyle for Wpf
 +
 +### Description
 +In this sample we show you how to use custom font symbol with pointStyle to your Map Suite applications for the WPF environment. The UseCustomFontSymbolWithPointStyle-ForWpf.NETCore sample supports ThinkGeo UI for Wpf 12.0 and higher.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​UseCustomFontSymbolWithPointStyle-ForWpf.NETCore/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +```csharp
 +ShapeFileFeatureLayer citiesLayer = new ShapeFileFeatureLayer("​AppData/​MajorCities_3857.shp"​);​
 +citiesLayer.Name = "​MajorCities";​
 +citiesLayer.ZoomLevelSet.ZoomLevel04.DefaultPointStyle = new PointStyle(
 +                                    new GeoFont("​AppData/​vectormap-icons.ttf",​ 20, DrawingFontStyles.Regular),​
 +                                    "​\ue0b5",​new GeoSolidBrush(GeoColors.Red));​
 +citiesLayer.ZoomLevelSet.ZoomLevel05.DefaultPointStyle = new PointStyle(
 +                                    new GeoFont("​AppData/​vectormap-icons.ttf",​ 25, DrawingFontStyles.Regular),​
 +                                    "​\ue05c",​new GeoSolidBrush(GeoColors.Orange));​
 +citiesLayer.ZoomLevelSet.ZoomLevel06.DefaultPointStyle = new PointStyle(
 +                                    new GeoFont("​AppData/​vectormap-icons.ttf",​ 28, DrawingFontStyles.Regular),​
 +                                    "​\ue078",​new GeoSolidBrush(GeoColors.Green));​
 +citiesLayer.ZoomLevelSet.ZoomLevel07.DefaultPointStyle = new PointStyle(
 +                                    new GeoFont("​AppData/​vectormap-icons.ttf",​ 30, DrawingFontStyles.Regular), ​
 +                                    "​\ue035",​new GeoSolidBrush(GeoColors.DarkBlue));​
 +citiesLayer.ZoomLevelSet.ZoomLevel08.DefaultPointStyle = new PointStyle(
 +                                    new GeoFont("​AppData/​vectormap-icons.ttf",​ 34, DrawingFontStyles.Regular),​
 +                                    "​\ue02e",​new GeoSolidBrush(GeoColors.Blue));​
 +citiesLayer.ZoomLevelSet.ZoomLevel09.DefaultPointStyle = new PointStyle(
 +                                    new GeoFont("​AppData/​vectormap-icons.ttf",​ 36, DrawingFontStyles.Regular), ​
 +                                    "​\ue06f",​new GeoSolidBrush(GeoColors.Purple));​
 +citiesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle = new PointStyle(
 +                                    new GeoFont("​AppData/​vectormap-icons.ttf",​ 40, DrawingFontStyles.Regular),​
 +                                    "​\ue084",​ new GeoSolidBrush(GeoColors.Red));​
 +```
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +# Render Point With TextStyle for Wpf
 +
 +### Description
 +
 +In this sample we show you how to render points with textStyle in your WPF applications. It is using ThinkGeo Web Font which can be browsed/​downloaded from [Here](https://​thinkgeo.com/​map-icons-webfont). This sample uses ThinkGeo UI for Wpf 12.0.12 or higher.
 +
 +TextStyle can render a point layer with font glyphs, it can also take advantage of the text confliction check to avoid duplication. PointClusterStyle can also be used to remove duplication,​ and [here](https://​github.com/​ThinkGeo/​ClusterPointSample-ForWpf.NETCore) ​ is a sample of it. 
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​RenderPointWithTextStyle-ForWpf.NETCore/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +The sample is rendering the points from FriscoSchools.shp. One thing needs to be aware of: Column name is required for grabbing the corresponding attributes for each record in the shapefile. Here we pass in a column ("​textColumn"​) which doesn'​t exist in the data, that raises CustomColumnFetch event in which we can simply return the glyph content we are going to draw for each feature.  ​
 +
 +```csharp
 +    ShapeFileFeatureLayer shapeFileFeatureLayer = new ShapeFileFeatureLayer("​AppData/​FriscoSchools.shp"​);​
 +    // CustomColumnFetch event is raised every time the layer is fetching a column which doesn'​t exist. ​
 +    // In this example as "​textColumn"​ does not exist in the shape file, CustomColumnFetch event 
 +    // will be raised so give us a way to programmatically filling it in.  ​
 +    shapeFileFeatureLayer.FeatureSource.CustomColumnFetch += FeatureSource_CustomColumnFetch;​
 +
 +    // Use a font glyph to render a point. ​
 +    // This font in the sample can be downloaded at https://​thinkgeo.com/​map-icons-webfont.
 +    GeoFont geoFont = new GeoFont("​AppData/​vectormap-icons.ttf",​ 20);
 +    TextStyle textStyle = new TextStyle("​textColumn",​ geoFont, GeoBrushes.Yellow);​
 +   
 +    // "​textColumn"​ doesn'​t exist in the shape file, this is why CustomColumnFetch is raised.
 +    shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(textStyle);​
 +    shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;​
 +
 +    private void FeatureSource_CustomColumnFetch(object sender, CustomColumnFetchEventArgs e)
 +    {
 +        // "​\ue0aa"​ is the school zone glyph content in ThinkGeo Web Font. 
 +        // Visit https://​thinkgeo.com/​map-icons-webfont and you can find more glyph icons from ThinkGeo. ​
 +        e.ColumnValue = "​\ue0aa";​
 +    }
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Get Feature Clicked On With Projection Sample for Wpf ====
 +
 +
 +This WPF project shows a technique for finding the feature of a point, line or polygon-based layer that the user clicked on.  As with the earlier sample entitled "Get Feature Clicked On", in order to give the user the expected behavior, a buffer in screen coordinates needs to be set so that the selected feature is chosen within a constant distance in screen coordinates from where the user clicked on, regardless of the zoom level. ​ In addition, this sample also addresses a limitation of the earlier sample by showing the contrast between using the functions GetFeaturesNearestTo and GetFeaturesWithinDistanceOf.
 +
 +While the function GetFeaturesNearestTo as used in "Get Feature Clicked On" works quickly and is adequate in most cases, it is not guaranteed to get the closest feature. ​ In contrast, with the new function GetFeaturesWithinDistanceOf,​ you can loop through the features within a specified tolerance and get their exact distance. ​ While this approach requires some more code, it is guaranteed to get the closest feature in any case. 
 +
 +This sample also demonstrates another aspect of distance queries. We have the layers projected to the Google Map projection from WGS84, and you'll notice that the aforementioned distance functions (GetFeaturesWithinDistanceOf and GetFeaturesWithinDistanceOf) work seamlessly without requiring the developer to worry whether the layers are projected or not.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​GetFeatureClickedOnWithProjectionSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​GetFeatureClickedOnWithProjectionSample-ForWpf| View this sample on Github]]
 +# Apply DirectionPointStyle for LineStyle for Wpf
 +
 +### Description
 +
 +The Map Suite WPF ApplyDirectionPointStyleForLineStyle sample will guide you to draw lineStyle'​s direction Point on map. The direction Point can be an image or a glyph, it not only rotates the icon accross the angle of the road, but also provides a way to customize the rotation of the direction point. The arrows highlighted in the red circle in the following screenshot are customized based on the line's attributes. Please check out the source for detail. This sample supports Map Suite 10.5.8 and higher. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​ApplyDirectionPointStyleForLineStyle-ForWpf/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +
 +
 +``` csharp
 +// Set up the line style with white inner pen and black center pen. 
 +var lineStyle = new LineStyle(new GeoPen(GeoColors.Black,​ 16) { StartCap = DrawingLineCap.Round,​ EndCap = DrawingLineCap.Round }, new GeoPen(GeoColors.White,​ 13) { StartCap = DrawingLineCap.Round,​ EndCap = DrawingLineCap.Round });
 +// Set up the required column name for the style. We will customize the line style based on this column value. ​
 +lineStyle.RequiredColumnNames.Add("​FENAME"​);​
 +            ​
 +// Set up the style for Direction Point and set up the event for customization. ​
 +lineStyle.DirectionPointStyle = new PointStyle(new GeoImage("​AppData\\Arrow.png"​));​
 +lineStyle.DrawingDirectionPoint += LineStyle_DrawingPointStyle;​
 +            ​
 +private void LineStyle_DrawingPointStyle(object sender, DrawingDirectionPointEventArgs e)
 +{
 +    // Customize the direction point for the line feature whose "​FENAME"​ column equals to "​Mo-Pac"​. ​
 +    if (e.Line.ColumnValues["​FENAME"​] == "​Mo-Pac"​)
 +    {
 +        e.RotationAngle = 0;
 +    }
 +}
 +```
 +
 +### Getting Help
 +
 +[Map Suite Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf)
 +
 +[Map Suite Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +# File Geo Database Viewer Sample for Wpf
 +
 +### Description
 +
 +This sample demonstrates how you can read data from an ESRI FileGeodatabase,​ and you will find the code as straightforward as consuming any other data source in Map Suite.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​FileGeoDatabaseViewerSample-ForWpf.NETCore/​blob/​master/​Screenshot.png)
 +
 +### About the Code
 +Use a ClassBreakStyle to colorize each state differently depending on the range into which its population falls. ​ This value is found in the states ShapeFile DBF in the column named "​POP1990"​.
 +
 +```csharp
 +       
 +layerOverlay = new LayerOverlay();​
 +layer = new FileGeoDatabaseFeatureLayer(@"​..\..\..\AppData\Shapes.gdb"​);​
 +layer.FeatureSource.ProjectionConverter = new ProjectionConverter(4326,​ 3857);
 +layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = new LineStyle(new GeoPen(GeoColors.Green));​
 +layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = new PointStyle(PointSymbolType.Circle,​ 5, new GeoSolidBrush(GeoColors.Red));​
 +layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = new AreaStyle(new GeoPen(GeoColors.Black));​
 +layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;​
 +layerOverlay.Layers.Add(layer);​
 +mapView.Overlays.Add(layerOverlay);​
 +
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +==== Print Map With Multi Pages Sample for Wpf ====
 +
 +In this sample we show you how to add robust printing support to your Map Suite applications for the WPF. Using the code in this sample, you'll be able to build a Print Preview interface that lets your users interactively arrange items on a virtual page before printing the result to a printer, exporting to a PDF or to a bitmap image. The printing system also print maps with multi pages or print multi maps to one page. 
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​PrintMapWithMultiPagesSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​PrintMapWithMultiPagesSample-ForWpf| View this sample on Github]]
 +
 +==== Distance Query On Wrap Dateline Mode Sample for Wpf ====
 +
 +
 +This WPF sample shows how to take advantage of the projection class **WrapDatelineProjection** for doing spatial queries when on a “virtual map”. From this spatial query example, the developer should understand how the same principle using the same projection class can be applied for other operations such as Spatial Queries, Identify, etc.               
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DistanceQueryOnWrapDatelineModeSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DistanceQueryOnWrapDatelineModeSample-ForWpf| View this sample on Github]]
 +
 +==== Get Features From Arc GIS Server Sample for WPF ====
 +
 +
 +In this wpf-based project, it illustrates how to get the features from the ArcGIS Restful Server. On the left side of the screenshot shows the raster data from ArcGIS Server and on the other side shows the features from ArcGIS Restful Server. In order to run this project, you will need the Development Build 9.0.482.0 or later.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​GetFeaturesFromArcGISServerSample-ForWPF/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​GetFeaturesFromArcGISServerSample-ForWPF| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Vector Maps Sample for Wpf ====
 +
 +
 +This sample demonstrates how you can draw the map with Vector Tiles requested from ThinkGeo Cloud Services in your Map Suite GIS applications,​ with any style you want from [StyleJSON (Mapping Definition Grammar)](https://​wiki.thinkgeo.com/​wiki/​thinkgeo_stylejson). It will show you how to use the XyzFileBitmapTileCache and XyzFileVectorTileCache to improve the performance of map rendering. It supports have 3 built-in default map styles and more awasome styles from StyleJSON file you passed in, by '​Custom': ​
 +- Light
 +- Dark
 +- TransparentBackground
 +- Custom
 +
 +ThinkGeo Cloud Vector Maps support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudVectorMapsSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudVectorMapsSample-ForWpf| View this sample on Github]]
 +
 +==== Styles With Inmemory Feature Layer Sample for Wpf ====
 +
 +In this WPF project, we show how to build an InMemoryFeatureLayer from a text file. You'll notice how the columns are set up so that styles can be used as if the InMemoryFeatureLayer were a static layer such as a Shapefile. Here, we apply a Class Breask Style and a Text Style to our InMemoryFeatureLayer. What we learn in this sample can be applied to all the different editions of Map Suite.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​StylesWithInmemoryFeatureLayerSample-ForWpf/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​StylesWithInmemoryFeatureLayerSample-ForWpf| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Reverse Geocoding Sample for Wpf ====
 +
 +
 +This **Sample** ​ demonstrates how you can use ThinkGeo Cloud Client to get meaningful addresses from ThinkGeo GIS Server by a geographic location. It ships with an optimized set of worldwide coverage of cities and towns, but any customized data can be supported as well.
 +
 +ThinkGeo Cloud Client support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudReverseGeocodingSample-ForWpf/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudReverseGeocodingSample-ForWpf| View this sample on Github]]
 +# CustomZoomLevel for ThinkGeoCloudRasterOverlay for Wpf
 +
 +### Description
 +
 +The ThinkGeo WPF CustomZoomLevelForThinkGeoCloudRasterOverlay sample will guide you to how to draw map with custom zoomlevels. This CustomZoomLevelForThinkGeoCloudRasterOverlay sample supports ThinkGeo UI WPF 12.0.0.0 and higher and will show you how to create a WPF application using ThinkGeo UI WPF components.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​CustomZoomLevelForThinkGeoCloudRasterOverlay-ForWpf.NETCore/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +
 +``` csharp
 +ThinkGeoCloudMapsZoomLevelSet thinkGeoCloudMapsZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet();​
 +ThinkGeoCloudMapsZoomLevelSet customZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet();​
 +
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel04.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel05.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel06.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel07.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel08.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel09.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel10.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel11.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel12.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel13.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel14.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel15.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel16.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel17.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel18.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel19.Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.ZoomLevel20.Scale));​
 +
 +double zoomlevel17Scale = thinkGeoCloudMapsZoomLevelSet.ZoomLevel20.Scale;​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(zoomlevel17Scale / 2));
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(zoomlevel17Scale / 4));
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(zoomlevel17Scale / 8));
 +```
 +
 +### Getting Help
 +
 +[ThinkGeo Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​thinkgeo_desktop_for_wpf)
 +
 +[ThinkGeo Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +# CustomZoomLevel for ThinkGeoCloudRasterOverlay for Wpf
 +
 +### Description
 +
 +The Map Suite WPF CustomZoomLevelForThinkGeoCloudRasterOverlay sample will guide you to how to draw map with custom zoomlevels. This CustomZoomLevelForThinkGeoCloudRasterOverlay sample supports Map Suite 10.0.0.0 and higher and will show you how to create a WPF application using Map Suite WPF components.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf) for the details.
 +
 +![Screenshot](https://​github.com/​ThinkGeo/​CustomZoomLevelForThinkGeoCloudRasterOverlay-ForWpf/​blob/​master/​Screenshot.gif)
 +
 +### About the Code
 +
 +``` csharp
 +ThinkGeoCloudMapsZoomLevelSet thinkGeoCloudMapsZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet();​
 +ThinkGeoCloudMapsZoomLevelSet customZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet();​
 +customZoomLevelSet.CustomZoomLevels.Clear();​
 +
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[3].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[4].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[5].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[6].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[7].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[8].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[9].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[10].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[11].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[12].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[13].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[14].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[15].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[16].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[17].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[18].Scale));​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[19].Scale));​
 +
 +double zoomlevel17Scale = thinkGeoCloudMapsZoomLevelSet.CustomZoomLevels[19].Scale;​
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(zoomlevel17Scale / 2));
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(zoomlevel17Scale / 4));
 +customZoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(zoomlevel17Scale / 8));
 +```
 +
 +### Getting Help
 +
 +[Map Suite Desktop for Wpf Wiki Resources](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_wpf)
 +
 +[Map Suite Desktop for Wpf Product Description](https://​thinkgeo.com/​ui-controls#​desktop-platforms)
 +
 +[ThinkGeo Community Site](http://​community.thinkgeo.com/​)
 +
 +[ThinkGeo Web Site](http://​www.thinkgeo.com)
 +
 +### About ThinkGeo
 +
 +ThinkGeo is a GIS (Geographic Information Systems) company founded in 2004 and located in Frisco, TX. Our clients are in more than 40 industries including agriculture,​ energy, transportation,​ government, engineering,​ software development,​ and defense.
 +
 +
 +
 +==== Display Wms Raster Layer Sample for WinForms ====
 +
 +
 +This sample demonstrates how you use WmsRasterLayer to render wms server in your Map Suite GIS applications. This WmsRasterLayer support would work in all of the Map Suite controls such as Wpf, Web, MVC and WebApi. ​
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_winforms) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​DisplayWmsRasterLayerSample-ForWinForms/​raw/​master/​Screenshot.png?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​DisplayWmsRasterLayerSample-ForWinForms| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Maps Sample for Android ====
 +
 +
 +This sample demonstrates how you can display ThinkGeo Cloud Maps in your Map Suite GIS applications. It will show you how to use the XYZFileBitmapTileCache to improve the performance of map rendering. ThinkGeoCloudMapsOverlay uses the ThinkGeo Cloud XYZ Tile Server as raster map tile server. It supports 5 different map styles: ​
 +- Light
 +- Dark
 +- Aerial
 +- Hybrid
 +- TransparentBackground
 +
 +ThinkGeo Cloud Maps support would work in all of the Map Suite controls such as Wpf, WinForms, Web, MVC, WebApi and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_mobile_for_android) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForAndroid/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForAndroid| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Maps Sample for iOS ====
 +
 +
 +This sample demonstrates how you can display ThinkGeo Cloud Maps in your Map Suite GIS applications. It will show you how to use the XYZFileBitmapTileCache to improve the performance of map rendering. ThinkGeoCloudMapsOverlay uses the ThinkGeo Cloud XYZ Tile Server as raster map tile server. It supports 5 different map styles: ​
 +- Light
 +- Dark
 +- Aerial
 +- Hybrid
 +- TransparentBackground
 +
 +ThinkGeo Cloud Maps support would work in all of the Map Suite controls such as Wpf, WinForms, Web, MVC, WebApi and Android.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_mobile_for_ios) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForiOS/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForiOS| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Maps Sample for WebForms ====
 +
 +
 +This sample demonstrates how you can display ThinkGeo Cloud Maps in your Map Suite GIS applications. It will show you how to use the XYZFileBitmapTileCache to improve the performance of map rendering. ThinkGeoCloudMapsOverlay uses the ThinkGeo Cloud XYZ Tile Server as raster map tile server. It supports 5 different map styles: ​
 +- Light
 +- Dark
 +- Aerial
 +- Hybrid
 +- TransparentBackground
 +
 +ThinkGeo Cloud Maps support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_web_for_webforms) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForWebForms/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForWebForms| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Maps Sample for WinForms ====
 +
 +
 +This sample demonstrates how you can display ThinkGeo Cloud Maps in your Map Suite GIS applications. It will show you how to use the XYZFileBitmapTileCache to improve the performance of map rendering. ThinkGeoCloudMapsOverlay uses the ThinkGeo Cloud XYZ Tile Server as raster map tile server. It supports 5 different map styles: ​
 +- Light
 +- Dark
 +- Aerial
 +- Hybrid
 +- TransparentBackground
 +
 +ThinkGeo Cloud Maps support would work in all of the Map Suite controls such as Wpf, Web, MVC, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_desktop_for_winforms) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForWinForms/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForWinForms| View this sample on Github]]
 +
 +==== ThinkGeo Cloud Maps Sample for Mvc ====
 +
 +
 +This sample demonstrates how you can display ThinkGeo Cloud Maps in your Map Suite GIS applications. It will show you how to use the XYZFileBitmapTileCache to improve the performance of map rendering. ThinkGeoCloudMapsOverlay uses the ThinkGeo Cloud XYZ Tile Server as raster map tile server. It supports 5 different map styles: ​
 +- Light
 +- Dark
 +- Aerial
 +- Hybrid
 +- TransparentBackground
 +
 +ThinkGeo Cloud Maps support would work in all of the Map Suite controls such as Wpf, WinForms, Web, WebApi, Android and iOS.
 +
 +Please refer to [Wiki](http://​wiki.thinkgeo.com/​wiki/​map_suite_web_for_mvc) for the details.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForMvc/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForMvc| View this sample on Github]]
 +
 +==== Display ThinkGeo Cloud Maps Sample for JavaScript ====
 +
 +
 +This sample demonstrates how you can display ThinkGeo Cloud Maps in a web page using javascript. It supports 5 different map styles: ​
 +- Light
 +- Dark
 +- Aerial
 +- Hybrid
 +- TransparentBackground
 +
 +ThinkGeo Cloud Maps works in all of the Map Suite controls such as Wpf, WinForms, Web, Android and iOS.
 +
 +{{https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForJavaScript/​raw/​master/​Screenshot.gif?​500|Screenshot}}
 +
 +
 +[[https://​github.com/​ThinkGeo/​ThinkGeoCloudMapsSample-ForJavaScript| View this sample on Github]]
 +
  
map_suite_desktop_for_wpf_all_samples.txt · Last modified: 2020/03/08 06:39 (external edit)