Map 类使应用程序可以将已安装的地图应用程序打开到特定位置或地标。
入门
若要开始使用此 API,请阅读 Xamarin.Essentials 的入门指南,确保在项目中正确安装和设置库。
使用 Map
在类中添加对 Xamarin.Essentials 的引用:
using Xamarin.Essentials;
Map 功能通过调用具有 Location 或 Placemark 的 OpenAsync 方法来使用可选的 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 打开时,需要以下信息:
CountryNameAdminAreaThoroughfareLocality
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
}
}
}
扩展方法
如果已有对 Location 或 Placemark 的引用,则可以使用具有可选的 MapLaunchOptions 的内置扩展方法 OpenMapAsync:
public class MapTest
{
public async Task OpenPlacemarkOnMap(Placemark placemark)
{
try
{
await placemark.OpenMapAsync();
}
catch (Exception ex)
{
// No map application available to open
}
}
}
方向模式
如果调用不带任何 MapLaunchOptions 的 OpenMapAsync,则地图将启动到指定位置。 (可选)可以有从设备的当前位置开始计算的导航路线。 这是通过设置 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);
}
}
平台差异
平台实现细节
Android 使用 geo: URI 方案启动设备上的地图应用程序。 这可能会提示用户从支持此 URI 方案的现有应用程序中进行选择。 Xamarin.Essentials 使用支持此方案的 Google Maps 进行测试。