首页 > 程序开发 > 移动开发 > Windows Phone >

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

2014-02-19

Windows Phone 8 使用全新的地图API,与之前Windows Phone7 采用的必应地图有很大的区别。最主要的区别在于,wp7地图控件是Sliverlight控件,而wp8控件直接基于wp8 SDK libraries,并且采用了诺基亚的Her

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();
        }

实现出来的效果如图:


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


相关文章
最新文章
热点推荐