学习笔记。
具体的怎么配置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,添加图钉,点击图钉左键可以拖拽,截图如下:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。