我创建了一个类来执行Reverse Geocode。
public static class ReverseGeoCoding
{
public static ObservableCollection<string> Addresses = new ObservableCollection<string>();
public static string Address;
public static Task<MapAddress> DoReverseGeoCodingAsync( GeoCoordinate location )
{
MapAddress mapAddress = null;
var reverseGeocode = new ReverseGeocodeQuery
{
GeoCoordinate = new GeoCoordinate( location.Latitude, location.Longitude )
};
var tcs = new TaskCompletionSource<MapAddress>();
EventHandler<QueryCompletedEventArgs<System.Collections.Generic.IList<MapLocation>>> handler = null;
handler = ( sender, args ) =>
{
if ( args.Error != null )
{
tcs.SetException( args.Error );
}
else if ( args.Cancelled )
{
tcs.SetCanceled();
}
else
{
if ( args.Result.Count > 0 )
{
var firstOrDefault = args.Result.FirstOrDefault();
if ( firstOrDefault != null )
{
mapAddress = firstOrDefault.Information.Address;
}
}
reverseGeocode.QueryCompleted -= handler;
tcs.SetResult( mapAddress );
}
};
reverseGeocode.QueryCompleted += handler;
reverseGeocode.QueryAsync();
return tcs.Task;
}
}
我称之为第一个(例如35,-112)是仅显示国家和国家代码(美国)。我第二次调用此函数时,返回的数据已按预期填满(Williams,AZ 86046)。
知道我在这里做错了吗?
更多地研究这个问题我发现了以下内容:
位置(GeoCoordinate)取自页面上地图的中心。如果地图被缩放(ZoomLevel)小于10,我发现这个问题发生了,如果地图缩放到10以上就可以了。不知道为什么会这样。任何的想法?有人注意到了吗?