欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

windows phone 8开发地图相关API的调用

程序员文章站 2022-06-16 10:32:21
Windows Phone 8 使用全新的地图API,与之前Windows Phone7 采用的必应地图有很大的区别。最主要的区别在于,wp7地图控件是Sliverlight控件,...

Windows Phone 8 使用全新的地图API,与之前Windows Phone7 采用的必应地图有很大的区别。最主要的区别在于,wp7地图控件是Sliverlight控件,而wp8控件直接基于wp8 SDK libraries,并且采用了诺基亚的Here‘s地图。在兼容方面,旧的wp7控件仍然被wp8 SDK支持,但不推荐使用。

要调用wp8的地图服务,首先开启ID_CAP_LOCATION。之后,按照不同的需求进行不同的调用。

获取当前位置

1.先实例化一个Geolocator类;

2.需要特别注意的是,Geolocator返回的包含当前位置信息的Geocoordinate不能直接使用。wp8的map control支持使用GeoCoordiante。因此我们可以写一个ConverterCoordinate类来进行转换;

3.最后将map control加到应用界面中,可以在xaml中直接加或通过cs的代码来加入。

关键代码如下:

private async void GetAndShowMyLocationOnMap()
        {
            Geolocator myGeoLoc = new Geolocator();
            myGeoLoc.DesiredAccuracy = PositionAccuracy.High;

            Geoposition myGeoposition = await myGeoLoc.GetGeopositionAsync();
            Geocoordinate myGeocoordinate = myGeoposition.Coordinate;

            GeoCoordinate myGeoCoordinate = CoordinateConverter.ConvertGeocoordinate(myGeocoordinate);
 
            Map MyMap = new Map();
            MyMap.Center = myGeoCoordinate;
            MyMap.ZoomLevel = 7;
            MyMap.LandmarksEnabled = true;
            MyMap.CartographicMode = MapCartographicMode.Hybrid;
            ContentPanel.Children.Add(MyMap);
        }
具体位置搜索:

添加System.Device程序集的引用,并且引用Microsoft.Phone.Tasks和System.Device.Location命名空间,注意到如果我们没有设定搜索地点,那么地图会默认选择我们当前位置作为搜索地点(Center)。

private void LaunchMapTask()
        {
            MapsTask mapsTask = new MapsTask();
            mapsTask.SearchTerm = "同济大学";
            
            mapsTask.ZoomLevel = 7;
            mapsTask.Show();
        }
路线搜索(Maps DirectionTask)

Maps Direction Task可以帮助我们方便地实现路线导航的功能。具体代码如下:

private void MapsDirectionsTask()
        {
            MapsDirectionsTask mapsDirectionsTask = new MapsDirectionsTask();

            LabeledMapLocation StartPoint = new LabeledMapLocation("同济大学", null);
            LabeledMapLocation EndPoint = new LabeledMapLocation("复旦大学", null);

            mapsDirectionsTask.Start = StartPoint;
            mapsDirectionsTask.End = EndPoint;

            mapsDirectionsTask.Show();
        }

实现出来的效果如图:

windows phone 8开发地图相关API的调用

源代码下载地址:https://download.csdn.net/detail/lanqiuchaoren/6932593