try
{
// (1)前台(XAML)和后台(C#)完全可以达到一样的效果
// (2)哪种构造方式更明了、方便
Graphic myGraph = new Graphic();
myGraph.Geometry = new MapPoint(108, 30);
myGraph.Symbol = new SimpleMarkerSymbol()
{
Color = new SolidColorBrush(Colors.Blue),
Size = 12,
Style = SimpleMarkerSymbol.SimpleMarkerStyle.Square
};
// (3)只能用图层ID作索引,不能用Name,为什么?
// (4)这里必须要将XAML中定义的图层(即使在XAML中使用x:Name="myGraphicLayer"定义过)强制转换一下,为什么?
// (5)图形的样式(Symbol)一般在<Grid.Resources> </Grid.Resources>之间定义好,然后可以再下面直接重用
// 重用方式:1)在XAML中:<esri:Graphic x:Name="graph1" Symbol="{StaticResource RedMarkerSymbol}">
// 2)在后台代码中:graphic[0] = new Graphic(){ Symbol = RedMarkerSymbol };
// (6)如何获取当前地图比例尺(菩提老王解答):假设dpi(dot per inch)是96,一英寸有96个点,一英寸=2.54厘米,所以一厘米在地图上代表的距离就是:
// double cmlength = mymap.Resolution * 96 / 2.54;
GraphicsLayer myLayer = mymap.Layers["myGraphicLayer"] as GraphicsLayer;
myLayer.Graphics.Add(myGraph);
}
catch(System.Exception ex)
{
MessageBox.Show("添加图形失败:\n" + ex.Message, "提示", MessageBoxButton.OK);
}