• WP8.1 Study2:MapControl控件的应用


    总的界面布局如下:

    其xaml代码如下:

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="450"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <Maps:MapControl Grid.Row="0" Name="myMap"/>
            
            <StackPanel Grid.Row="1">
                <TextBlock Name="sliderTextblock" HorizontalAlignment="Center" Style="{ThemeResource ControlHeaderTextBlockStyle}" />
                <Slider Name="mapSlider" ValueChanged="mapSlider_ValueChanged" Maximum="18" Minimum="0"/>
                <StackPanel Orientation="Horizontal">
                    <Button Name="GetPositionButton" Content="Get" Click="GetPositionButton_Click"/>
                    <Button Name="SetPositonButton" Content="Set" Click="SetPositonButton_Click"/>
                </StackPanel>
                <TextBlock Name="showMapTextblock" />
                
            </StackPanel>
    
        </Grid>

    对应的主要的C#代码如下:

     protected async override void OnNavigatedTo(NavigationEventArgs e)
            {
                var locator = new Geolocator();//开启位置
                locator.DesiredAccuracyInMeters = 50;//设置位置服务的准确度  50米
    
                var position = await locator.GetGeopositionAsync(); //得到当前的位置
                await myMap.TrySetViewAsync(position.Coordinate.Point,18D);// MapControl控件显示当前位置(point是纬度和经度;18D为当前精度
                mapSlider.Value = myMap.ZoomLevel;
                
            }
    
            private void GetPositionButton_Click(object sender, RoutedEventArgs e)
            {
                showMapTextblock.Text = string.Format("{0},{1}", myMap.Center.Position.Longitude, myMap.Center.Position.Latitude);
            }
    
            private async void SetPositonButton_Click(object sender, RoutedEventArgs e)
            {
                var setposition = new Windows.Devices.Geolocation.BasicGeoposition();
                setposition.Latitude=47;
                setposition.Longitude=-122;
                var mypoint=new Windows.Devices.Geolocation.Geopoint(setposition);
                if (await myMap.TrySetViewAsync(mypoint, 18D))
                {
                    //
                }
            }
          
    
            private void mapSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
            {
                if (myMap!=null)
                {
                    myMap.ZoomLevel = e.NewValue;
                    double tt;
                    tt = e.NewValue / 18 * 100;
                    sliderTextblock.Text = string.Format("{0}%", (int)tt);
                }
            }
        }

    同时还需注意在Package文件中把位置功能打开,相应步骤如下:

  • 相关阅读:
    字符个数统计
    面试题——字符的左右移动
    5. Longest Palindromic Substring
    Linux- AWS之EC2大数据集群定时开关机
    Openldap- 大机群身份验证服务
    Linux- 自动备份MySQL数据库脚本
    Linux- 运维
    JAVA- 切换默认的Java
    HIVE- 新建UDF范例
    Hadoop- 集群启动详解
  • 原文地址:https://www.cnblogs.com/NEIL-X/p/4097603.html
Copyright © 2020-2023  润新知