地图范围

ContractedBlock.gif ExpandedBlockStart.gif View Code
  1  <esri:Map x:Name="MyMap" WrapAround="True" ExtentChanged="MyMap_ExtentChanged" ExtentChanging="MyMap_ExtentChanged">
2 <esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"
3 Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
4 </esri:Map>
5
6 <Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,10,0" >
7 <Rectangle Fill="#77919191" Stroke="Gray" RadiusX="10" RadiusY="10" Margin="0,0,0,5" >
8 <Rectangle.Effect>
9 <DropShadowEffect/>
10 </Rectangle.Effect>
11 </Rectangle>
12 <Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" />
13 <StackPanel Orientation="Vertical" Margin="25">
14 <StackPanel.Resources>
15 <Style TargetType="TextBlock">
16 <Setter Property="FontWeight" Value="Bold"/>
17 <Setter Property="FontSize" Value="11" />
18 </Style>
19 </StackPanel.Resources>
20 <TextBlock>
21 <Run FontStyle="Italic">Absolute</Run>
22 <LineBreak />
23 <Run>MinX: </Run>
24 <Run Text="{Binding ElementName=MyMap, Path=Extent.XMin, StringFormat=\{0:F3\}}" />
25 <LineBreak />
26 <Run>MinY: </Run>
27 <Run Text="{Binding ElementName=MyMap, Path=Extent.YMin, StringFormat=\{0:F3\}}" />
28 <LineBreak />
29 <Run>MaxX: </Run>
30 <Run Text="{Binding ElementName=MyMap, Path=Extent.XMax, StringFormat=\{0:F3\}}" />
31 <LineBreak />
32 <Run>MaxY: </Run>
33 <Run Text="{Binding ElementName=MyMap, Path=Extent.YMax, StringFormat=\{0:F3\}}" />
34
35 <LineBreak />
36 <LineBreak />
37 <Run FontStyle="Italic">Normalized</Run>
38 <LineBreak />
39 <Run>Left X: </Run>
40 <Run x:Name="MinXNormalized" />
41 <LineBreak />
42 <Run>Bottom Y: </Run>
43
44 <Run>Bottom Y: </Run>
45 <Run x:Name="MinYNormalized"/>
46 <LineBreak />
47 <Run>Right X: </Run>
48 <Run x:Name="MaxXNormalized"/>
49 <LineBreak />
50 <Run>Top Y: </Run>
51 <Run x:Name="MaxYNormalized"/>
52 </TextBlock>
53 </StackPanel>
54
55
56
57 public partial class MapExtent : UserControl
58 {
59 public MapExtent()
60 {
61 InitializeComponent();
62 }
63
64 private void MyMap_ExtentChanged(object sender, ESRI.ArcGIS.Client.ExtentEventArgs e)
65 {
66 Envelope newExtent = null;
67
68 if (MyMap.WrapAroundIsActive)
69 {
70 Geometry normalizedExtent = Geometry.NormalizeCentralMeridian(e.NewExtent);
71 if (normalizedExtent is Polygon)
72 {
73 newExtent = new Envelope();
74
75 foreach (MapPoint p in (normalizedExtent as Polygon).Rings[0])
76 {
77 if (p.X < newExtent.XMin || double.IsNaN(newExtent.XMin))
78 newExtent.XMin = p.X;
79 if (p.Y < newExtent.YMin || double.IsNaN(newExtent.YMin))
80 newExtent.YMin = p.Y;
81 }
82
83 foreach (MapPoint p in (normalizedExtent as Polygon).Rings[1])
84 {
85 if (p.X > newExtent.XMax || double.IsNaN(newExtent.XMax))
86 newExtent.XMax = p.X;
87 if (p.Y > newExtent.YMax || double.IsNaN(newExtent.YMax))
88 newExtent.YMax = p.Y;
89 }
90 }
91 else if (normalizedExtent is Envelope)
92 newExtent = normalizedExtent as Envelope;
93 } else
94 newExtent = e.NewExtent;
95
96 MinXNormalized.Text = newExtent.XMin.ToString("0.000");
97 MinYNormalized.Text = newExtent.YMin.ToString("0.000");
98 MaxXNormalized.Text = newExtent.XMax.ToString("0.000");
99 MaxYNormalized.Text = newExtent.YMax.ToString("0.000");
100 }

转载于:https://www.cnblogs.com/lanbaoming/archive/2011/07/27/2117866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值