windows phone 8 -使用c#实现反向地理编码时出现错误
本文关键字:编码 错误 phone 使用 实现 windows | 更新日期: 2023-09-27 17:53:45
我正在尝试使用c#与visual studio实现反向地理编码。但是我无法处理异常"参数超出范围异常"。
代码:
ReverseGeocodeQuery reverseGeocode = new ReverseGeocodeQuery();
reverseGeocode.GeoCoordinate = new GeoCoordinate(47.608, -122.337);
reverseGeocode.QueryCompleted += reverseGeocode_QueryCompleted;
reverseGeocode.QueryAsync();
private void reverseGeocode_QueryCompleted(object sender,
QueryCompletedEventArgs<IList<MapLocation>> e)
{
MapAddress geoAddress = e.Result[0].Information.Address;
if (e.Error == null && e.Result.Count > 0)
{
MapAddress address = e.Result[0].Information.Address;
MessageBox.Show(address.Country);
}
}
显示的例外是:系统。用户代码未处理ArgumentOutOfRangeException消息=索引超出范围。必须非负且小于集合的大小。
请告诉我正确的解决方法。
问题是你期望e.g result(一个数组)有值,而它可能没有值,所以当你试图访问第一个元素(e.g result[0])时,它失败了。
奇怪的是,你正在访问e.f result[0]来创建一个你甚至不使用的变量。
按如下方式更改代码,您将不会收到错误:
private void reverseGeocode_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e)
{
if (e.Error == null && e.Result != null && e.Result.Count > 0)
{
MapAddress address = e.Result[0].Information.Address;
MessageBox.Show(address.Country);
}
}