【问题标题】:Xamarin Forms - Maps - Is possible to call Google Maps from a button?Xamarin Forms - Maps - 是否可以通过按钮调用 Google 地图?
【发布时间】:2019-02-27 00:00:40
【问题描述】:

我有一个 Xamarin Forms 应用程序,我需要调用 Google 地图来跟踪从我的位置到目的地的路线。

我知道我可以从地图组件中做到这一点,而且我已经做到了。但我也想通过地图上的按钮来做到这一点。有可能吗?

感谢您的帮助!

【问题讨论】:

    标签: google-maps xamarin xamarin.forms


    【解决方案1】:

    您可以使用UriDevice.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&center=37.759748,-122.427135");
    

    顺便说一句:永远不要假设 Android 上安装了 Google 地图,因为世界各地有许多发行版安装了自己的地图应用程序而不是 Google(这种情况在中国、俄罗斯等地经常发生......)。

    【讨论】:

    • 感谢您的帮助!解决了问题!
    • Xamarin.Essentials 插件(请参阅@akhil 答案)是更好的解决方案。
    【解决方案2】:

    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
        }
    

    【讨论】:

    • 这在 Waze 地图中没有按预期工作。这不是晚上开放的位置。您在其他地图上所做的任何解决方案
    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多