我想知道是否可以在我的Windows Phone 8.1应用程序中调用默认导航应用程序。我有一个地址,我希望用户按下按钮,并能够通过默认导航应用程序导航到该地址。如果可以,我该怎么做?
感谢您的时间,
约翰
答案 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,但如果有人遇到问题,它会给我很多帮助。