从 启动本机地图应用 Xamarin.Forms
每个平台上的本机地图应用都可以由 Xamarin.EssentialsLauncher
类从Xamarin.Forms应用程序启动。 此类使应用程序能够通过其自定义 URI 方案打开另一个应用。 可以使用 方法调用 OpenAsync
启动器功能,并 string
传入 表示要打开的自定义 URL 方案的 或 Uri
参数。 有关 Xamarin.Essentials的更多信息,请参见Xamarin.Essentials。
注意
使用 类的 Xamarin.EssentialsLauncher
替代方法是使用其 Map
类。 有关详细信息,请参阅 Xamarin.Essentials:映射。
每个平台上的地图应用都使用唯一的自定义 URI 方案。 有关 iOS 上的地图 URI 方案的信息,请参阅 developer.apple.com 上的 映射链接 。 有关 Android 上的地图 URI 方案的信息,请参阅 Developers.android.com 上的 Maps 开发人员指南 和 适用于 Android 的 Google Maps 意向 。 有关通用 Windows 平台 (UWP) 上的地图 URI 方案的信息,请参阅启动Windows 地图应用。
在特定位置启动地图应用
通过将相应的查询参数添加到每个地图应用的自定义 URI 方案,可以打开本机地图应用中的位置:
if (Device.RuntimePlatform == Device.iOS)
{
// https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
await Launcher.OpenAsync("http://maps.apple.com/?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.Android)
{
// open the maps app directly
await Launcher.OpenAsync("geo:0,0?q=394+Pacific+Ave+San+Francisco+CA");
}
else if (Device.RuntimePlatform == Device.UWP)
{
await Launcher.OpenAsync("bingmaps:?where=394 Pacific Ave San Francisco CA");
}
以下示例代码导致在每个平台上启动本机地图应用,地图以表示指定位置的图钉为中心:
启动带有路线的地图应用
通过将相应的查询参数添加到每个地图应用的自定义 URI 方案,可以启动显示方向的本机地图应用:
if (Device.RuntimePlatform == Device.iOS)
{
// https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
await Launcher.OpenAsync("http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino");
}
else if (Device.RuntimePlatform == Device.Android)
{
// opens the 'task chooser' so the user can pick Maps, Chrome or other mapping app
await Launcher.OpenAsync("http://maps.google.com/?daddr=San+Francisco,+CA&saddr=Mountain+View");
}
else if (Device.RuntimePlatform == Device.UWP)
{
await Launcher.OpenAsync("bingmaps:?rtp=adr.394 Pacific Ave San Francisco CA~adr.One Microsoft Way Redmond WA 98052");
}
此示例代码导致在每个平台上启动本机地图应用,地图以指定位置之间的路线为中心: