Windows Phone 8打开地图到当前位置

时间:2013-01-08 23:27:25

标签: maps windows-phone-8

在Windows Phone 8中,我想将本机地图应用打开到用户当前位置。

我最接近的是MapsTask。描述让我相信它是完美的:

  

允许应用程序启动以中心为中心的地图应用程序   使用Center属性或用户当前指定的位置   位置即可。如果设置了SearchTerm,则匹配搜索项的位置为   在地图上标记。

如果您不提供中心,则会使用用户的当前位置。完善!但是如果你没有提供一个中心,并且没有提供SearchTerm,它就会引发一次扫描(按照设计)。

所以我必须提供一个SearchTerm。但是如果我把一些不是本地的东西放在用户身上,我会得到一个弹出窗口,上面写着“没有结果:我们找不到任何匹配的搜索。请尝试不同的拼写或搜索词”。

现在我可以自己获取用户位置并使用该位置启动地图,但考虑到地图应用程序已为您执行此操作,这感觉不对。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

自己获取Geolocation并将其发送到地图任务是很好的。使用GeoLocation一次性地理定位获取来做到这一点。

private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var geoLocator = new Geolocator();
    var geoloc = await geoLocator.GetGeopositionAsync();
    new MapsTask()
    {
        Center = new GeoCoordinate(geoloc.Coordinate.Latitude, geoloc.Coordinate.Longitude),
        ZoomLevel = 10
    }.Show();
}

答案 1 :(得分:0)

我写了一个关于获取当前位置的教程,它可以为您提供一个可以映射出来的位置。

private async void GetCurrentLocation()
{
    Geolocator locationFinder = new Geolocator
    {
        DesiredAccuracyInMeters = 50,
        DesiredAccuracy = PositionAccuracy.Default
    };
    try
    {
        Geoposition currentLocation = await  locationFinder.GetGeopositionAsync(
            maximumAge: TimeSpan.FromSeconds(120),
            timeout: TimeSpan.FromSeconds(10));
            String longitude = currentLocation.Coordinate.Longitude.ToString("0.00");
            String latitude = currentLocation.Coordinate.Latitude.ToString("0.00");
            MyTextBlock.Text = "Long: " + longitude + "Lat: " + latitude;
    }
    catch (UnauthorizedAccessException)
    {
       MessageBox.Show("And Exception Occured");
    }
}

请参阅下面的链接以获取演示文件的完整内容 http://mobile.tutsplus.com/tutorials/windows/windows-phone-8-sdk-geolocation-services/