Xamarin.Essentials:映射
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
打开时,需要以下信息:
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
}
}
}
扩展方法
如果已有对 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 进行测试。