Xamarin.Essentials:映射

Map 类使应用程序可以将已安装的地图应用程序打开到特定位置或地标。

入门

若要开始使用此 API,请阅读 Xamarin.Essentials 的入门指南,确保在项目中正确安装和设置库。

使用 Map

在类中添加对 Xamarin.Essentials 的引用:

using Xamarin.Essentials;

Map 功能通过调用具有 LocationPlacemarkOpenAsync 方法来使用可选的 MapLaunchOptions 打开。

public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var location = new Location(47.645160, -122.1306032);
        var options =  new MapLaunchOptions { Name = "Microsoft Building 25" };

        try
        {
            await Map.OpenAsync(location, options);
        }
        catch (Exception ex)
        {
            // No map application available to open
        }
    }
}

使用 Placemark 打开时,需要以下信息:

  • CountryName
  • AdminArea
  • Thoroughfare
  • Locality
public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var placemark = new Placemark
            {
                CountryName = "United States",
                AdminArea = "WA",
                Thoroughfare = "Microsoft Building 25",
                Locality = "Redmond"
            };
        var options =  new MapLaunchOptions { Name = "Microsoft Building 25" };

        try
        {
            await Map.OpenAsync(placemark, options);
        }
        catch (Exception ex)
        {
            // No map application available to open or placemark can not be located
        }
    }
}

扩展方法

如果已有对 LocationPlacemark 的引用,则可以使用具有可选的 MapLaunchOptions 的内置扩展方法 OpenMapAsync

public class MapTest
{
    public async Task OpenPlacemarkOnMap(Placemark placemark)
    {
        try
        {
            await placemark.OpenMapAsync();
        }
        catch (Exception ex)
        {
            // No map application available to open
        }
    }
}

方向模式

如果调用不带任何 MapLaunchOptionsOpenMapAsync,则地图将启动到指定位置。 (可选)可以有从设备的当前位置开始计算的导航路线。 这是通过设置 MapLaunchOptions 上的 NavigationMode 来完成的:

public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var location = new Location(47.645160, -122.1306032);
        var options =  new MapLaunchOptions { NavigationMode = NavigationMode.Driving };

        await Map.OpenAsync(location, options);
    }
}

平台差异

  • NavigationMode 支持骑行、驾车和步行。

平台实现细节

Android 使用 geo: URI 方案启动设备上的地图应用程序。 这可能会提示用户从支持此 URI 方案的现有应用程序中进行选择。 Xamarin.Essentials 使用支持此方案的 Google Maps 进行测试。

API

第 9 频道YouTube 上查找更多 Xamarin 视频。