private void Button_Load(object sender, System.Windows.RoutedEventArgs e)
{
try
{
FeatureSet featureSet = FeatureSet.FromJson(JsonTextBox.Text);
GraphicsLayer graphicsLayerFromFeatureSet = new GraphicsLayer()
{
Graphics = new GraphicCollection(featureSet)
};
if (!featureSet.SpatialReference.Equals(MyMap.SpatialReference))
{
if (MyMap.SpatialReference.Equals(new SpatialReference(102100)) &&
featureSet.SpatialReference.Equals(new SpatialReference(4326)))
foreach (Graphic g in graphicsLayerFromFeatureSet.Graphics)
g.Geometry = _mercator.FromGeographic(g.Geometry);
else if (MyMap.SpatialReference.Equals(new SpatialReference(4326)) &&
featureSet.SpatialReference.Equals(new SpatialReference(102100)))
foreach (Graphic g in graphicsLayerFromFeatureSet.Graphics)
g.Geometry = _mercator.ToGeographic(g.Geometry);
else
{
GeometryService geometryService =
new GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
geometryService.ProjectCompleted += (s, a) =>
{
for (int i = 0; i < a.Results.Count; i++)
graphicsLayerFromFeatureSet.Graphics[i].Geometry = a.Results[i].Geometry;
};
geometryService.Failed += (s, a) =>
{
MessageBox.Show("Projection error: " + a.Error.Message);
};
geometryService.ProjectAsync(graphicsLayerFromFeatureSet.Graphics, MyMap.SpatialReference);
}
}
SimpleRenderer simpleRenderer = new SimpleRenderer();
SolidColorBrush symbolColor = new SolidColorBrush(Colors.Blue);
graphicsLayerFromFeatureSet.Renderer = simpleRenderer;
if (featureSet.GeometryType == GeometryType.Polygon || featureSet.GeometryType == GeometryType.Polygon)
{
simpleRenderer.Symbol = new SimpleFillSymbol()
{
Fill = symbolColor
};
}
else if (featureSet.GeometryType == GeometryType.Polyline)
{
simpleRenderer.Symbol = new SimpleLineSymbol()
{
Color = symbolColor
};
}
else // Point
{
simpleRenderer.Symbol = new SimpleMarkerSymbol()
{
Color = symbolColor,
Size = 12
};
}
myInfoWindow = new InfoWindow()
{
Background = new SolidColorBrush(Colors.Black),
BorderBrush = new SolidColorBrush(Colors.White),
BorderThickness = new Thickness(1),
CornerRadius = 10,
Map = MyMap,
};
myInfoWindow.MouseLeftButtonDown += myInfoWindow_MouseLeftButtonDown;
StackPanel stackPanelParent = new StackPanel()
{
Orientation = System.Windows.Controls.Orientation.Vertical,
Margin = new Thickness(12)
};
foreach (KeyValuePair<string, string> keyvalue in featureSet.FieldAliases)
{
StackPanel stackPanelChild = new StackPanel()
{
Orientation = System.Windows.Controls.Orientation.Horizontal,
Margin = new Thickness(0, 0, 0, 6)
};
TextBlock textValue = new TextBlock()
{
Text = keyvalue.Value + ": "
};
TextBlock textKey = new TextBlock();
Binding keyBinding = new Binding(string.Format("[{0}]", keyvalue.Key));
textKey.SetBinding(TextBlock.TextProperty, keyBinding);
stackPanelChild.Children.Add(textValue);
stackPanelChild.Children.Add(textKey);
if (keyvalue.Key == featureSet.DisplayFieldName)
{
textKey.FontWeight = textValue.FontWeight = FontWeights.Bold;
stackPanelParent.Children.Insert(0, stackPanelChild);
}
else
stackPanelParent.Children.Add(stackPanelChild);
}
myInfoWindow.Content = stackPanelParent;
ContentPanel.Children.Add(myInfoWindow);
MyMap.Layers.Add(graphicsLayerFromFeatureSet);
graphicsLayerFromFeatureSet.MouseLeftButtonDown += graphicsLayerFromFeatureSet_MouseLeftButtonDown;
JsonPivot.Visibility = Visibility.Collapsed;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "GraphicsLayer creation failed", MessageBoxButton.OK);
}
}