ReverseGeocodeQuery不会返回正确的信息

时间:2014-12-02 00:48:25

标签: c# windows-phone-8 async-await reverse-geocoding

我创建了一个类来执行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以上就可以了。不知道为什么会这样。任何的想法?有人注意到了吗?

0 个答案:

没有答案