Xamarin.Forms 地图地理编码

下载示例 下载示例

命名空间 Xamarin.Forms.Maps 提供一个 Geocoder 类,该类在字符串地址和存储在 对象中的 Position 纬度和经度坐标之间进行转换。 有关结构的详细信息 Position ,请参阅 地图位置和距离

注意

中 Xamarin.Essentials提供了备用地理编码 API。 API 在 Xamarin.EssentialsGeocoding 对地址进行地理编码时提供结构化地址数据,而不是此 API 返回的字符串。 有关详细信息,请参阅 Xamarin.Essentials:地理编码

对地址进行地理编码

可以通过创建 Geocoder 实例并在 实例上Geocoder调用 GetPositionsForAddressAsync 方法,将街道地址地理编码为纬度和经度坐标:

using Xamarin.Forms.Maps;
// ...
Geocoder geoCoder = new Geocoder();

IEnumerable<Position> approximateLocations = await geoCoder.GetPositionsForAddressAsync("Pacific Ave, San Francisco, California");
Position position = approximateLocations.FirstOrDefault();
string coordinates = $"{position.Latitude}, {position.Longitude}";

方法 GetPositionsForAddressAsync 采用表示 string 地址的参数,并异步返回可以表示地址的 Position 对象的集合。

对地址进行反向地理编码

可以通过创建 Geocoder 实例并在 实例上Geocoder调用 GetAddressesForPositionAsync 方法,将纬度和经度坐标反向地理编码为街道地址:

using Xamarin.Forms.Maps;
// ...
Geocoder geoCoder = new Geocoder();

Position position = new Position(37.8044866, -122.4324132);
IEnumerable<string> possibleAddresses = await geoCoder.GetAddressesForPositionAsync(position);
string address = possibleAddresses.FirstOrDefault();

方法 GetAddressesForPositionAsync 采用由 Position 纬度和经度坐标组成的参数,并异步返回表示位置附近地址的字符串集合。