FeatureLayer JSON

This sample demonstrates how to use the FeatureLayer.FromJson method to deserialize a ArcGIS Json feature layer to a native FeatureLayer. An ArcGIS Json feature layer consists of a layer definition and feature set.
Download Sample Application<UserControl x:Class="ArcGISWPFSDK.FeatureLayerFromJson" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:esri="http://schemas.esri.com/arcgis/client/2009"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.Resources> <LinearGradientBrush x:Key="PanelGradient" EndPoint="0.5,1" StartPoint="0.5,0"> <LinearGradientBrush.RelativeTransform> <TransformGroup> <ScaleTransform CenterY="0.5" CenterX="0.5"/> <SkewTransform CenterY="0.5" CenterX="0.5"/> <RotateTransform Angle="176" CenterY="0.5" CenterX="0.5"/> <TranslateTransform/> </TransformGroup> </LinearGradientBrush.RelativeTransform> <GradientStop Color="#FF145787" Offset="0.16"/> <GradientStop Color="#FF3D7FAC" Offset="0.502"/> <GradientStop Color="#FF88C5EF" Offset="0.984"/> </LinearGradientBrush> </Grid.Resources> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="395"/> </Grid.ColumnDefinitions> <esri:Map x:Name="MyMap" Extent="-15000000,2000000,-7000000,8000000" WrapAround="True" Grid.Column="0"> <esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/> </esri:Map> <Grid Margin="5" Grid.Column="1" Background="White" VerticalAlignment="Stretch"> <Grid.RowDefinitions> <RowDefinition Height="50" /> <RowDefinition /> </Grid.RowDefinitions> <StackPanel Orientation="Horizontal" Grid.Row="0"> <Button Content="Clear Map" Width="172" Click="Button_ClearMap" Margin="10" /> <Button Content="Create FeatureLayer from JSON" Width="172" Click="Button_Load" Margin="10" /> </StackPanel> <ScrollViewer Grid.Row="1"> <TextBox x:Name="JsonTextBox" FontSize="12" /> </ScrollViewer> </Grid> </Grid> </UserControl>
using System; using System.Windows.Controls; using ESRI.ArcGIS.Client; using System.Windows; using System.Collections.Generic; namespace ArcGISWPFSDK { public partial class FeatureLayerFromJson : UserControl { public FeatureLayerFromJson() { InitializeComponent(); CreateFeatureLayerJson(); } private void Button_Load(object sender, System.Windows.RoutedEventArgs e) { try { FeatureLayer featureLayer = FeatureLayer.FromJson(JsonTextBox.Text); featureLayer.RendererTakesPrecedence = false; MyMap.Layers.Add(featureLayer); } catch (Exception ex) { MessageBox.Show(ex.Message, "FeatureLayer creation failed", MessageBoxButton.OK); } } private void Button_ClearMap(object sender, RoutedEventArgs e) { List<FeatureLayer> featureLayers = new List<FeatureLayer>(); foreach (Layer layer in MyMap.Layers) if (layer is FeatureLayer) featureLayers.Add(layer as FeatureLayer); for (int i = 0; i < featureLayers.Count; i++) MyMap.Layers.Remove(featureLayers[i]); } private void CreateFeatureLayerJson() { string jsonInput = @"{ \""layerDefinition\"": { \""name\"": \""Feature Notes - Points\"", \""type\"": \""Feature Layer\"", \""displayField\"": \""TITLE\"", \""geometryType\"": \""esriGeometryPoint\"", \""drawingInfo\"": { \""renderer\"": { \""type\"": \""uniqueValue\"", \""field1\"": \""TYPEID\"", \""uniqueValueInfos\"": [ { \""value\"": \""0\"", \""label\"": \""Stickpin\"", \""description\"": \""\"", \""symbol\"": { \""type\"": \""esriPMS\"", \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/GreenStickpin.png\"", \""contentType\"": \""image/png\"", \""width\"": 24, \""height\"": 24, \""xoffset\"": 0, \""yoffset\"": 12 } }, { \""value\"": \""1\"", \""label\"": \""Pushpin\"", \""symbol\"": { \""type\"": \""esriPMS\"", \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/GreenShinyPin.png\"", \""contentType\"": \""image/png\"", \""width\"": 24, \""height\"": 24, \""xoffset\"": 2, \""yoffset\"": 8 } } ] } }, \""objectIdField\"": \""OBJECTID\"", \""fields\"": [ { \""name\"": \""OBJECTID\"", \""type\"": \""esriFieldTypeOID\"", \""alias\"": \""OBJECTID\"", \""editable\"": false }, { \""name\"": \""TITLE\"", \""type\"": \""esriFieldTypeString\"", \""alias\"": \""Title\"", \""editable\"": true, \""length\"": 50 }, { \""name\"": \""DESCRIPTION\"", \""type\"": \""esriFieldTypeString\"", \""alias\"": \""Description\"", \""editable\"": true, \""length\"": 1073741822 }, { \""name\"": \""TYPEID\"", \""type\"": \""esriFieldTypeInteger\"", \""alias\"": \""Type ID\"", \""editable\"": true } ], \""types\"": [ { \""id\"": 0, \""name\"": \""Stickpin\"", \""domains\"": { }, \""templates\"": [ { \""name\"": \""Stickpin\"", \""description\"": \""\"", \""drawingTool\"": \""esriFeatureEditToolPoint\"", \""prototype\"": { \""attributes\"": { \""TYPEID\"": 0, \""VISIBLE\"": 1, \""TITLE\"": \""Point\"" } } } ] }, { \""id\"": 1, \""name\"": \""Pushpin\"", \""domains\"": { }, \""templates\"": [ { \""name\"": \""Pushpin\"", \""description\"": \""\"", \""drawingTool\"": \""esriFeatureEditToolPoint\"", \""prototype\"": { \""attributes\"": { \""TYPEID\"": 1, \""VISIBLE\"": 1, \""TITLE\"": \""Point\"" } } } ] } ] }, \""featureSet\"": { \""geometryType\"": \""esriGeometryPoint\"", \""features\"": [ { \""geometry\"": { \""x\"": -1.359478966190899E7, \""y\"": 6040655.3174108695, \""spatialReference\"": { \""wkid\"": 102100 } }, \""attributes\"": { \""TYPEID\"": 0, \""TITLE\"": \""Seattle\"", \""OBJECTID\"": 0, \""DESCRIPTION\"": \""The Emerald City\"" }, \""symbol\"": { \""angle\"": 0, \""xoffset\"": 12, \""yoffset\"": 12, \""type\"": \""esriPMS\"", \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/GreenFlag.png\"", \""width\"": 24, \""height\"": 24 } }, { \""geometry\"": { \""x\"": -1.0356305647523504E7, \""y\"": 4059407.5442596273, \""spatialReference\"": { \""wkid\"": 102100 } }, \""attributes\"": { \""TYPEID\"": 0, \""TITLE\"": \""Cajun Capital\"", \""OBJECTID\"": 1, \""DESCRIPTION\"": \""Mardi Gras!\"" }, \""symbol\"": { \""angle\"": 0, \""xoffset\"": 12, \""yoffset\"": 12, \""type\"": \""esriPMS\"", \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/RedFlag.png\"", \""width\"": 24, \""height\"": 24 } }, { \""geometry\"": { \""x\"": -1.3531196670179205E7, \""y\"": 5908575.52289088, \""spatialReference\"": { \""wkid\"": 102100 } }, \""attributes\"": { \""TYPEID\"": 1, \""TITLE\"": \""Mt St. Helens\"", \""OBJECTID\"": 2, \""DESCRIPTION\"": \""Fantastic View!\"" } }, { \""geometry\"": { \""x\"": -1.2406043613821708E7, \""y\"": 5497650.058829881, \""spatialReference\"": { \""wkid\"": 102100 } }, \""attributes\"": { \""TYPEID\"": 1, \""TITLE\"": \""Yellowstone Park\"", \""OBJECTID\"": 3, \""DESCRIPTION\"": \""America's first national park\"" } }, { \""geometry\"": { \""x\"": -1.1231970859361714E7, \""y\"": 4299117.455318636, \""spatialReference\"": { \""wkid\"": 102100 } }, \""attributes\"": { \""TYPEID\"": 1, \""TITLE\"": \""Dust bowl\"", \""OBJECTID\"": 4, \""DESCRIPTION\"": \""Time to go to California\"" } } ] } }"; // string.Replace necessary here to handle double-quotes escaped for the '@' string literal JsonTextBox.Text = jsonInput.Replace("\\", ""); } } }
Imports System.Windows.Controls Imports ESRI.ArcGIS.Client Imports System.Windows Imports System.Collections.Generic Namespace ArcGISWPFSDK Partial Public Class FeatureLayerFromJson Inherits UserControl Public Sub New() InitializeComponent() CreateFeatureLayerJson() End Sub Private Sub Button_Load(sender As Object, e As System.Windows.RoutedEventArgs) Try Dim featureLayer__1 As FeatureLayer = FeatureLayer.FromJson(JsonTextBox.Text) featureLayer__1.RendererTakesPrecedence = False MyMap.Layers.Add(featureLayer__1) Catch ex As Exception MessageBox.Show(ex.Message, "FeatureLayer creation failed", MessageBoxButton.OK) End Try End Sub Private Sub Button_ClearMap(sender As Object, e As RoutedEventArgs) Dim featureLayers As New List(Of FeatureLayer)() For Each layer As Layer In MyMap.Layers If TypeOf layer Is FeatureLayer Then featureLayers.Add(TryCast(layer, FeatureLayer)) End If Next For i As Integer = 0 To featureLayers.Count - 1 MyMap.Layers.Remove(featureLayers(i)) Next End Sub Private Sub CreateFeatureLayerJson() Dim jsonInput As String = "{" & vbCr & vbLf & " \""layerDefinition\"": {" & vbCr & vbLf & " \""name\"": \""Feature Notes - Points\""," & vbCr & vbLf & " \""type\"": \""Feature Layer\""," & vbCr & vbLf & " \""displayField\"": \""TITLE\""," & vbCr & vbLf & " \""geometryType\"": \""esriGeometryPoint\""," & vbCr & vbLf & " \""drawingInfo\"": {" & vbCr & vbLf & " \""renderer\"": {" & vbCr & vbLf & " \""type\"": \""uniqueValue\""," & vbCr & vbLf & " \""field1\"": \""TYPEID\""," & vbCr & vbLf & " \""uniqueValueInfos\"": [" & vbCr & vbLf & " {" & vbCr & vbLf & " \""value\"": \""0\""," & vbCr & vbLf & " \""label\"": \""Stickpin\""," & vbCr & vbLf & " \""description\"": \""\""," & vbCr & vbLf & " \""symbol\"": {" & vbCr & vbLf & " \""type\"": \""esriPMS\""," & vbCr & vbLf & " \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/GreenStickpin.png\""," & vbCr & vbLf & " \""contentType\"": \""image/png\""," & vbCr & vbLf & " \""width\"": 24," & vbCr & vbLf & " \""height\"": 24," & vbCr & vbLf & " \""xoffset\"": 0," & vbCr & vbLf & " \""yoffset\"": 12" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""value\"": \""1\""," & vbCr & vbLf & " \""label\"": \""Pushpin\""," & vbCr & vbLf & " \""symbol\"": {" & vbCr & vbLf & " \""type\"": \""esriPMS\""," & vbCr & vbLf & " \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/GreenShinyPin.png\""," & vbCr & vbLf & " \""contentType\"": \""image/png\""," & vbCr & vbLf & " \""width\"": 24," & vbCr & vbLf & " \""height\"": 24," & vbCr & vbLf & " \""xoffset\"": 2," & vbCr & vbLf & " \""yoffset\"": 8" & vbCr & vbLf & " }" & vbCr & vbLf & " }" & vbCr & vbLf & " ]" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " \""objectIdField\"": \""OBJECTID\""," & vbCr & vbLf & " \""fields\"": [" & vbCr & vbLf & " {" & vbCr & vbLf & " \""name\"": \""OBJECTID\""," & vbCr & vbLf & " \""type\"": \""esriFieldTypeOID\""," & vbCr & vbLf & " \""alias\"": \""OBJECTID\""," & vbCr & vbLf & " \""editable\"": false" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""name\"": \""TITLE\""," & vbCr & vbLf & " \""type\"": \""esriFieldTypeString\""," & vbCr & vbLf & " \""alias\"": \""Title\""," & vbCr & vbLf & " \""editable\"": true," & vbCr & vbLf & " \""length\"": 50" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""name\"": \""DESCRIPTION\""," & vbCr & vbLf & " \""type\"": \""esriFieldTypeString\""," & vbCr & vbLf & " \""alias\"": \""Description\""," & vbCr & vbLf & " \""editable\"": true," & vbCr & vbLf & " \""length\"": 1073741822" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""name\"": \""TYPEID\""," & vbCr & vbLf & " \""type\"": \""esriFieldTypeInteger\""," & vbCr & vbLf & " \""alias\"": \""Type ID\""," & vbCr & vbLf & " \""editable\"": true" & vbCr & vbLf & " }" & vbCr & vbLf & " ]," & vbCr & vbLf & " \""types\"": [" & vbCr & vbLf & " {" & vbCr & vbLf & " \""id\"": 0," & vbCr & vbLf & " \""name\"": \""Stickpin\""," & vbCr & vbLf & " \""domains\"": {" & vbCr & vbLf & " " & vbCr & vbLf & " }," & vbCr & vbLf & " \""templates\"": [" & vbCr & vbLf & " {" & vbCr & vbLf & " \""name\"": \""Stickpin\""," & vbCr & vbLf & " \""description\"": \""\""," & vbCr & vbLf & " \""drawingTool\"": \""esriFeatureEditToolPoint\""," & vbCr & vbLf & " \""prototype\"": {" & vbCr & vbLf & " \""attributes\"": {" & vbCr & vbLf & " \""TYPEID\"": 0," & vbCr & vbLf & " \""VISIBLE\"": 1," & vbCr & vbLf & " \""TITLE\"": \""Point\""" & vbCr & vbLf & " }" & vbCr & vbLf & " }" & vbCr & vbLf & " }" & vbCr & vbLf & " ]" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""id\"": 1," & vbCr & vbLf & " \""name\"": \""Pushpin\""," & vbCr & vbLf & " \""domains\"": {" & vbCr & vbLf & " " & vbCr & vbLf & " }," & vbCr & vbLf & " \""templates\"": [" & vbCr & vbLf & " {" & vbCr & vbLf & " \""name\"": \""Pushpin\""," & vbCr & vbLf & " \""description\"": \""\""," & vbCr & vbLf & " \""drawingTool\"": \""esriFeatureEditToolPoint\""," & vbCr & vbLf & " \""prototype\"": {" & vbCr & vbLf & " \""attributes\"": {" & vbCr & vbLf & " \""TYPEID\"": 1," & vbCr & vbLf & " \""VISIBLE\"": 1," & vbCr & vbLf & " \""TITLE\"": \""Point\""" & vbCr & vbLf & " }" & vbCr & vbLf & " }" & vbCr & vbLf & " }" & vbCr & vbLf & " ]" & vbCr & vbLf & " }" & vbCr & vbLf & " ]" & vbCr & vbLf & " }," & vbCr & vbLf & " \""featureSet\"": {" & vbCr & vbLf & " \""geometryType\"": \""esriGeometryPoint\""," & vbCr & vbLf & " \""features\"": [" & vbCr & vbLf & " {" & vbCr & vbLf & " \""geometry\"": {" & vbCr & vbLf & " \""x\"": -1.359478966190899E7," & vbCr & vbLf & " \""y\"": 6040655.3174108695," & vbCr & vbLf & " \""spatialReference\"": {" & vbCr & vbLf & " \""wkid\"": 102100" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " \""attributes\"": {" & vbCr & vbLf & " \""TYPEID\"": 0," & vbCr & vbLf & " \""TITLE\"": \""Seattle\""," & vbCr & vbLf & " \""OBJECTID\"": 0," & vbCr & vbLf & " \""DESCRIPTION\"": \""The Emerald City\""" & vbCr & vbLf & " }," & vbCr & vbLf & " \""symbol\"": {" & vbCr & vbLf & " \""angle\"": 0," & vbCr & vbLf & " \""xoffset\"": 12," & vbCr & vbLf & " \""yoffset\"": 12," & vbCr & vbLf & " \""type\"": \""esriPMS\""," & vbCr & vbLf & " \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/GreenFlag.png\""," & vbCr & vbLf & " \""width\"": 24," & vbCr & vbLf & " \""height\"": 24" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""geometry\"": {" & vbCr & vbLf & " \""x\"": -1.0356305647523504E7," & vbCr & vbLf & " \""y\"": 4059407.5442596273," & vbCr & vbLf & " \""spatialReference\"": {" & vbCr & vbLf & " \""wkid\"": 102100" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " \""attributes\"": {" & vbCr & vbLf & " \""TYPEID\"": 0," & vbCr & vbLf & " \""TITLE\"": \""Cajun Capital\""," & vbCr & vbLf & " \""OBJECTID\"": 1," & vbCr & vbLf & " \""DESCRIPTION\"": \""Mardi Gras!\""" & vbCr & vbLf & " }," & vbCr & vbLf & " \""symbol\"": {" & vbCr & vbLf & " \""angle\"": 0," & vbCr & vbLf & " \""xoffset\"": 12," & vbCr & vbLf & " \""yoffset\"": 12," & vbCr & vbLf & " \""type\"": \""esriPMS\""," & vbCr & vbLf & " \""url\"": \""http://static.arcgis.com/images/Symbols/Basic/RedFlag.png\""," & vbCr & vbLf & " \""width\"": 24," & vbCr & vbLf & " \""height\"": 24" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""geometry\"": {" & vbCr & vbLf & " \""x\"": -1.3531196670179205E7," & vbCr & vbLf & " \""y\"": 5908575.52289088," & vbCr & vbLf & " \""spatialReference\"": {" & vbCr & vbLf & " \""wkid\"": 102100" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " \""attributes\"": {" & vbCr & vbLf & " \""TYPEID\"": 1," & vbCr & vbLf & " \""TITLE\"": \""Mt St. Helens\""," & vbCr & vbLf & " \""OBJECTID\"": 2," & vbCr & vbLf & " \""DESCRIPTION\"": \""Fantastic View!\""" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""geometry\"": {" & vbCr & vbLf & " \""x\"": -1.2406043613821708E7," & vbCr & vbLf & " \""y\"": 5497650.058829881," & vbCr & vbLf & " \""spatialReference\"": {" & vbCr & vbLf & " \""wkid\"": 102100" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " \""attributes\"": {" & vbCr & vbLf & " \""TYPEID\"": 1," & vbCr & vbLf & " \""TITLE\"": \""Yellowstone Park\""," & vbCr & vbLf & " \""OBJECTID\"": 3," & vbCr & vbLf & " \""DESCRIPTION\"": \""America's first national park\""" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " {" & vbCr & vbLf & " \""geometry\"": {" & vbCr & vbLf & " \""x\"": -1.1231970859361714E7," & vbCr & vbLf & " \""y\"": 4299117.455318636," & vbCr & vbLf & " \""spatialReference\"": {" & vbCr & vbLf & " \""wkid\"": 102100" & vbCr & vbLf & " }" & vbCr & vbLf & " }," & vbCr & vbLf & " \""attributes\"": {" & vbCr & vbLf & " \""TYPEID\"": 1," & vbCr & vbLf & " \""TITLE\"": \""Dust bowl\""," & vbCr & vbLf & " \""OBJECTID\"": 4," & vbCr & vbLf & " \""DESCRIPTION\"": \""Time to go to California\""" & vbCr & vbLf & " }" & vbCr & vbLf & " }" & vbCr & vbLf & " ]" & vbCr & vbLf & " }" & vbCr & vbLf & "}" ' string.Replace necessary here to handle double-quotes escaped for the '@' string literal JsonTextBox.Text = jsonInput.Replace("\", "") End Sub End Class End Namespace
Copyright © 1995-2014 Esri. All rights reserved.
5/16/2014