0

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

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

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

如果您不提供中心,它将使用用户当前位置。完美的!但是,如果您不提供中心,也不提供 SearchTerm,则会引发异常(按设计)。

所以我必须提供一个 SearchTerm。但是,如果我输入的内容不是用户本地的,我会弹出一个弹出窗口,上面写着“没有结果:我们找不到任何匹配您的搜索。尝试不同的拼写或搜索词”。

现在我可以自己获取用户的位置并使用该位置启动地图,但考虑到地图应用程序已经为您完成了,这感觉不对。有任何想法吗?

4

2 回答 2

1

可以自己获取地理位置并将其发送到地图任务。使用 GeoLocator 一次性地理定位获取来做到这一点。

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();
}
于 2013-01-08T23:36:36.133 回答
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/

于 2013-11-17T04:42:42.310 回答