我正在尝试使用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未被用户代码处理 消息=索引超出范围。必须是非负数且小于集合的大小。
请帮助我找到合适的解决方案。
答案 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);
}
}