导航

Arcgis silverlight-7 map extent and mouse coordinate

Posted on 2010-06-03 21:02  寒宵飞飞  阅读(524)  评论(0编辑  收藏  举报

1、功能介绍

     This sample show map extent and mouse coordinate

2、代码详解

     MainPage.axml中 

 

代码
<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable
="d"
    d:DesignHeight
="300" d:DesignWidth="400" xmlns:esri="http://schemas.esri.com/arcgis/client/2009">

    
<Grid x:Name="LayoutRoot" Background="White">

        
<esri:Map x:Name="MyMap"
                  MouseMove
="MyMap_MouseMove" ExtentChanged="MyMap_ExtentChange" ExtentChanging="MyMap_ExtentChange"//一个mouse移动触发函数,二个地图范围改变时触发函数
            
<esri:ArcGISTiledMapServiceLayer ID="MyLayer" 
                Url
="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_ShadedRelief_World_2D/MapServer"/>
        
</esri:Map>


        
<Canvas Width="225" Height="90" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,15,15,0" >
            
<Rectangle Stroke="Gray"  RadiusX="10" RadiusY="10" Fill="#775C90B2" Canvas.Left="0" Canvas.Top="0" Width="225" Height="90" >
                
<Rectangle.Effect>
                    
<DropShadowEffect/>
                
</Rectangle.Effect>
            
</Rectangle>
            
<Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Canvas.Left="10" Canvas.Top="10" Width="205" Height="70"  />
            
<TextBlock x:Name="ExtentTextBlock" Text="Extent: " Margin="20,14,15,0" TextWrapping="Wrap" FontWeight="Bold" />  //ExtentTextBlock显示地图范围
        
</Canvas>

        
<Grid Width="355" Height="65" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,111,0,0" >
            
<Rectangle Stroke="Gray"  RadiusX="10" RadiusY="10" Fill="#775C90B2" Margin="0,0,0,6" >
                
<Rectangle.Effect>
                    
<DropShadowEffect/>
                
</Rectangle.Effect>
            
</Rectangle>
            
<Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15"  />
            
<StackPanel Canvas.Left="20" Canvas.Top="14" Margin="20,14,10,0">
                
<TextBlock x:Name="ScreenCoordsTextBlock"   //ScreenCoordsTextBlock显示屏幕坐标
                    HorizontalAlignment="Left" VerticalAlignment="Center" Text="Screen Coords: " TextWrapping="Wrap" FontWeight="Bold" />
                
<TextBlock x:Name="MapCoordsTextBlock"   //MapCoordsTextBlock显示地图坐标
                    HorizontalAlignment
="Left" VerticalAlignment="Center" Text="Map Coords: " TextWrapping="Wrap" FontWeight="Bold" />
            
</StackPanel>
        
</Grid>

    
</Grid>
     
</UserControl>

 

 

MainPage.axml.cs中 

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightApplication1
{
    
public partial class MainPage : UserControl
    {
        
public MainPage()
        {
            InitializeComponent();
        }

        
void MyMap_ExtentChange(object sender, ESRI.ArcGIS.Client.ExtentEventArgs args)//地图范围改变时触发
        {
            setExtentText(args.NewExtent);
        }

        
private void setExtentText(ESRI.ArcGIS.Client.Geometry.Envelope newExtent)//将ExtentTextBlock设置为当前地图范围
        {
            ExtentTextBlock.Text 
= string.Format("MinX: {0}\nMinY: {1}\nMaxX: {2}\nMaxY: {3}",
                newExtent.XMin, newExtent.YMin, newExtent.XMax, newExtent.YMax);
        }

        
private void MyMap_MouseMove(object sender, MouseEventArgs e) //MouseMove触发鼠标坐标显示
        {
            
if (MyMap.Extent != null)
            {
                System.Windows.Point screenPoint 
= e.GetPosition(MyMap);
                ScreenCoordsTextBlock.Text 
= string.Format("Screen Coords: X = {0}, Y = {1}",
                    screenPoint.X, screenPoint.Y);

                ESRI.ArcGIS.Client.Geometry.MapPoint mapPoint 
= MyMap.ScreenToMap(screenPoint);
                MapCoordsTextBlock.Text 
= string.Format("Map Coords: X = {0}, Y = {1}",
                    Math.Round(mapPoint.X, 
4), Math.Round(mapPoint.Y, 4));
            }

        }     

    }
}

 

 

3、界面