• Windows Phone 8, 添加Map控件


    摘要:

    1. 添加Map控件到程序。

    2. 在Map控件中显示您当前的位置。

    内容:

    首先在WMAppManifest.xml中的Capabilities选项卡中勾选如下两项:ID_CAP_MAP, ID_CAP_LOCATION

    在XAML中添加Map控件:

            <!--ContentPanel - place additional content here-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <Controls:Map x:Name="mapWithMyLocation" />
            </Grid>

    在后台代码中, 添加Convert 类使能从Windows.Devices.Geolocation; 转换到 System.Device.Location;

        public static class CoordinateConverter
        {
            public static GeoCoordinate ConvertGeocoordinate(Geocoordinate geocoordinate)
            {
                return new GeoCoordinate
                    (
                    geocoordinate.Latitude,
                    geocoordinate.Longitude,
                    geocoordinate.Altitude ?? Double.NaN,
                    geocoordinate.Accuracy,
                    geocoordinate.AltitudeAccuracy ?? Double.NaN,
                    geocoordinate.Speed ?? Double.NaN,
                    geocoordinate.Heading ?? Double.NaN
                    );
            }
        }

    添加如下命名空间:

    using System.Device.Location;
    using Windows.Devices.Geolocation;
    using System.Windows.Shapes;
    using System.Windows.Media;
    using Microsoft.Phone.Maps.Controls;

    代码实例:

    public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
    
                // Sample code to localize the ApplicationBar
                //BuildLocalizedApplicationBar();
            }
    
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                ShowMyLocationOntheMap();
                base.OnNavigatedTo(e);
            }
    
    
            private async void ShowMyLocationOntheMap()
            {
                Geolocator myGeolocator = new Geolocator();
                Geoposition myGeoposition = await myGeolocator.GetGeopositionAsync();
                Geocoordinate myGeocoordinate = myGeoposition.Coordinate;
                GeoCoordinate myGeoCoordinate1 =
                    CoordinateConverter.ConvertGeocoordinate(myGeocoordinate);
                mapWithMyLocation.Center = myGeoCoordinate1;
                mapWithMyLocation.ZoomLevel = 17;
    
                // Create a small circle to mark the current location.
                Ellipse myCircle = new Ellipse();
                myCircle.Fill = new SolidColorBrush(Colors.Blue);
                myCircle.Height = 20;
                myCircle.Width = 20;
                myCircle.Opacity = 50;
                // Create a MapOverlay to contain the circle.
                MapOverlay myLocationOverlay = new MapOverlay();
                myLocationOverlay.Content = myCircle;
                myLocationOverlay.PositionOrigin = new Point(0.5, 0.5);
                myLocationOverlay.GeoCoordinate = myGeoCoordinate1;
                // Create a MapLayer to contain the MapOverlay.
                MapLayer myLocationLayer = new MapLayer();
                myLocationLayer.Add(myLocationOverlay);
                // Add the MapLayer to the Map.
                mapWithMyLocation.Layers.Add(myLocationLayer);
    
            }
    
        }

    参考: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj735578(v=vs.105).aspx

  • 相关阅读:
    异步加载JS
    解决Vue刷新一瞬间出现样式未加载完或者出现Vue代码问题
    什么是NaN?它的类型是什么?如何可靠的测试一个值是否等于NaN?
    JS快速获取图片宽高的方法
    为什么操作dom会消耗性能
    localstorage的浏览器支持情况
    mongodb Windows系统下安装卡死问题
    正则表达式
    CSS Hack
    css中cursor(光标类型)
  • 原文地址:https://www.cnblogs.com/qixue/p/3242321.html
Copyright © 2020-2023  润新知