使用C#实现反向地理编码时出错

时间:2015-06-04 18:36:32

标签: c# windows-phone-8 bing-maps

我正在尝试使用C#使用visual studio实现反向地理编码。但我无法处理异常" 参数超出范围异常"。

CODE:

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);
   }
}

显示的例外是: System.ArgumentOutOfRangeException未被用户代码处理 消息=索引超出范围。必须是非负数且小于集合的大小。

请帮助我找到合适的解决方案。

1 个答案:

答案 0 :(得分:1)

问题是你期望e.Result(一个数组)有可能没有值,所以当你试图访问第一个元素(e.Result [0])时,它会失败。

奇怪的是,您正在访问e.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);
   }
}