微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

supermap学习系列之silverlight--添加可拖拽的定位图钉方法一

学习笔记。

具体的怎么配置silverlight版本的地图,可以看他的官方帮助文档。

xaml代码

<Grid x:Name="LayoutRoot" Background="White">     
        <ic:Map x:Name="MyMap">
            <!--地图地址  自己添加-->
            <is:TiledDynamicRESTLayer Url="" />  
        </ic:Map>
        <Popup x:Name="dragMarkerPopup">
            <StackPanel Width="312" Height="220">
                <StackPanel.Background>
                        <!--<ImageBrush ImageSource="/images/infoWindow.png" Stretch="Fill"/>-->
                    <ImageBrush ImageSource="/images/1.png" Stretch="Fill"/>
                </StackPanel.Background>
                <Grid Margin="5">
                    <Grid.RowDeFinitions>
                        <RowDeFinition />
                        <RowDeFinition />
                        <RowDeFinition />
                        <RowDeFinition />
                        <RowDeFinition />
                    </Grid.RowDeFinitions>
                    <Grid.ColumnDeFinitions>
                        <ColumnDeFinition Width="40" />
                        <ColumnDeFinition />
                    </Grid.ColumnDeFinitions>
                    <TextBlock Text="合同地理位置信息" Grid.Row="0" Grid.ColumnSpan="2" Grid.Column="0"/>
                    <TextBlock VerticalAlignment="Center" Text="经度:" Grid.Row="1" Grid.Column="0"/>
                    <TextBlock VerticalAlignment="Center" Text="纬度:" Grid.Row="2" Grid.Column="0"/>
                    <TextBlock VerticalAlignment="Center" Text="类型:" Grid.Row="3" Grid.Column="0"/>
                    <TextBox Margin="0,5,5" x:Name="txtLongitudePopup" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" />
                    <TextBox Margin="0,5" x:Name="txtLatitudePopup" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2"/>
                    <ComboBox Margin="0,10" Grid.Row="3" Grid.Column="1"/>
                    <StackPanel HorizontalAlignment="Right" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" Orientation="Horizontal">
                        <Button x:Name="btnPopSaveConLonLat" Content="保存" Width="70"/>
                        <Button x:Name="btnPopCancel" Click="btnPopCancel_Click_1" Content="取消" Width="70"/>
                    </StackPanel>
                </Grid>
            </StackPanel>        
        </Popup>
        <Button x:Name="btnDrag" Content="点击" Height="23" Width="75" Click="btnDrag_Click_1" Margin="0,925,277" />
    </Grid>

后台代码

<p> public partial class MainPage : UserControl
    {
        private FeaturesLayer Drag_FeaturesLayer = new FeaturesLayer();
        public MainPage()
        {
            InitializeComponent();
        }           
           
        private void btnDrag_Click_1(object sender,RoutedEventArgs e)
        {
            Feature f = new Feature();
            f.Geometry = new GeoPoint(MyMap.Center.X,MyMap.Center.Y);
            PictureMarkerStyle picmarker = new PictureMarkerStyle();
            picmarker.source = new BitmapImage(new Uri("/images/6.png",UriKind.Relative));</p><p>            picmarker.Height = 37;
            picmarker.Width = 32;
            f.Style = picmarker;
            Drag_FeaturesLayer.Features.Add(f);
            MyMap.Layers.Add(Drag_FeaturesLayer);</p><p>            bool isMouseCaptured = false;
            f.MouseLeftButtonDown += (sender_,args) =>
            {
                isMouseCaptured = true;
                dragMarkerPopup.VerticalOffset = args.GetPosition(null).Y-210;
                dragMarkerPopup.HorizontalOffset = args.GetPosition(null).X-70;
                dragMarkerPopup.IsOpen = true;
            };
            f.MouseMove += (sender_,args) =>
            {
                if (isMouseCaptured)
                {                  
                    MyMap.Action = null;
                    Point2D new_point2d = MyMap.ScreenToMap(new Point(args.GetPosition(null).X,args.GetPosition(null).Y));
                    f.Geometry = new GeoPoint(new_point2d.X,new_point2d.Y);
                    dragMarkerPopup.VerticalOffset = args.GetPosition(null).Y-210;
                    dragMarkerPopup.HorizontalOffset = args.GetPosition(null).X-60;
                    txtLongitudePopup.Text = new_point2d.X.ToString();
                    txtLatitudePopup.Text = new_point2d.Y.ToString();
                }
            };
            f.MouseLeftButtonUp += (sender_,args) =>
            {
                isMouseCaptured = false;
                Point2D new_point2d = MyMap.ScreenToMap(new Point(args.GetPosition(null).X,args.GetPosition(null).Y));              
                MyMap.Action = new Pan(MyMap);
                txtLongitudePopup.Text = new_point2d.X.ToString();
                txtLatitudePopup.Text = new_point2d.Y.ToString();
            };
        }</p><p>        private void btnPopCancel_Click_1(object sender,RoutedEventArgs e)
        {
            dragMarkerPopup.IsOpen = false;
            Drag_FeaturesLayer.Features.Clear();
            MyMap.Layers.Remove(Drag_FeaturesLayer);
        }     
    }</p>

初始化截图如下:



添加页面中的button,添加图钉,点击图钉左键可以拖拽,截图如下:

图钉和Popup窗口一起动。点击取消按钮关闭Popup和删除图钉。

源码下载:http://download.csdn.net/detail/duyelang/7797059

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐