【发布时间】:2019-02-27 00:00:40
【问题描述】:
我有一个 Xamarin Forms 应用程序,我需要调用 Google 地图来跟踪从我的位置到目的地的路线。
我知道我可以从地图组件中做到这一点,而且我已经做到了。但我也想通过地图上的按钮来做到这一点。有可能吗?
感谢您的帮助!
【问题讨论】:
标签: google-maps xamarin xamarin.forms
我有一个 Xamarin Forms 应用程序,我需要调用 Google 地图来跟踪从我的位置到目的地的路线。
我知道我可以从地图组件中做到这一点,而且我已经做到了。但我也想通过地图上的按钮来做到这一点。有可能吗?
感谢您的帮助!
【问题讨论】:
标签: google-maps xamarin xamarin.forms
您可以使用Uri 到Device.Open 调用Google Maps,如果用户安装了Google Maps 应用程序,则可以选择Uri 的打开方式,否则他们将在默认浏览器中获取路线:
var uri = new Uri("http://maps.google.com/maps?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit");
Device.OpenUri(uri);
您还可以通过依赖注入进行特定于设备的检查,以检查是否安装了 Google Map 应用,如果安装则直接打开它:
即:在 iOS 上,您可以检查 comgooglemaps-x-callback: 是否可用:
var canOpenNative = UIApplication.SharedApplication.CanOpenUrl(NSUrl.FromString("comgooglemaps-x-callback://"));
然后您可以使用comgooglemaps:// 或comgooglemaps-x-callback:// 方案直接通过Uri 打开它。
var uri = new Uri("comgooglemaps-x-callback://?q=dessert¢er=37.759748,-122.427135");
顺便说一句:永远不要假设 Android 上安装了 Google 地图,因为世界各地有许多发行版安装了自己的地图应用程序而不是 Google(这种情况在中国、俄罗斯等地经常发生......)。
【讨论】:
Xamarin.Essentials 使用此插件。
private void Button_Clicked(object sender, EventArgs e)
{
Map.OpenAsync(11.26, 75.78, new MapLaunchOptions { NavigationMode=NavigationMode.Driving});
//var uri = new Uri("http://maps.google.com/maps?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit");
//Device.OpenUri(uri);
// Map.OpenAsync
}
【讨论】: