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消息=索引超出范围。必须非负且小于集合的大小。

请告诉我正确的解决方法。

windows phone 8 -使用c#实现反向地理编码时出现错误

问题是你期望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);
   }
}