在WP8.1应用程序中使用地址调用导航/地图/驱动器

时间:2014-06-27 16:53:11

标签: c# navigation maps windows-phone-8.1 drive

我想知道是否可以在我的Windows Phone 8.1应用程序中调用默认导航应用程序。我有一个地址,我希望用户按下按钮,并能够通过默认导航应用程序导航到该地址。如果可以,我该怎么做?

感谢您的时间,

约翰

2 个答案:

答案 0 :(得分:3)

您可以使用ms-drive-to and ms-walk-to schemes启动精细路线指引应用(具体取决于您想要的路线类型),但您首先需要获得地址的地理坐标。由于您的目标是Windows Phone 8.1,因此可以使用Windows.Services.Maps命名空间中的MapLocationFinder类。

string locationName = "Empire State Building";
string address = "350 5th Avenue, New York City, New York 10018";

var locFinderResult = await MapLocationFinder.FindLocationsAsync(
    address, new Geopoint(new BasicGeoposition()));

// add error checking here

var geoPos = locFinderResult.Locations[0].Point.Position;

var driveToUri = new Uri(String.Format(
     "ms-drive-to:?destination.latitude={0}&destination.longitude={1}&destination.name={2}", 
     geoPos.Latitude, 
     geoPos.Longitude, 
     locationName));

Launcher.LaunchUriAsync(driveToUri);                    

答案 1 :(得分:0)

官方解决方案是:

Uri uri = new Uri("ms-drive-to:?destination.latitude=" + latitude.ToString(CultureInfo.InvariantCulture) +
            "&destination.longitude=" + longitude.ToString(CultureInfo.InvariantCulture))

        var success = await Windows.System.Launcher.LaunchUriAsync(uri);

        if (success)
        {
            // Uri launched.
        }
        else
        {
            MessageBox.Show("error");
        }

但是,这个解决方案存在问题。

如果您使用诺基亚程序(HERE),它可以正常工作。

如果你想使用waze,你必须添加origin.latitude和origin.longitude。

在MSDN页面中,他们说没有必要,但事实上,你必须写它。

我已经无法启用加载moovit,但如果有人遇到问题,它会给我很多帮助。