无法从地址获取地理位置

本文关键字:获取 地理位置 地址 | 更新日期: 2023-09-27 17:58:11

我正在尝试获取列表中几个地址的地理坐标:

private void setRestaurant()
        {
            foreach (Restaurant restaurant in allRestaurant)
            {
                GeoCoordinate help;
                GeocodeQuery query = new GeocodeQuery()
                {
                    GeoCoordinate = new GeoCoordinate(0, 0),
                    SearchTerm = restaurant.address
                };
                query.QueryCompleted += (s, e) =>
                {
                    foreach (var item in e.Result)
                    {
                        help = item.GeoCoordinate;
                        restaurants.Add(restaurant);
                    }
                };
                query.QueryAsync();
            }
        }

由于某些原因,它无法获得其中任何一个的地理编码(有时它会找到一个)。地址是正确的,我确信这一点,我一个接一个地尝试过,没有迭代,所以错误就在这段代码中。知道吗?

谢谢!

无法从地址获取地理位置

这就是为什么:

foreach (Restaurant restaurant in allRestaurant)
{
     GeoCoordinate help;
     GeocodeQuery query = new GeocodeQuery()
     {
         GeoCoordinate = new GeoCoordinate(),
         SearchTerm = restaurant.address
     };
     TaskCompletionSource<Restaurant> task = new TaskCompletionSource<Restaurant>();
     query.QueryCompleted += (s, ev) =>
     {
         foreach (var item in ev.Result)
         {
             help = item.GeoCoordinate;
             task.TrySetResult(restaurant);
         }
         task.TrySetResult(null);
     };
     query.QueryAsync();
     var rest = (await task.Task);
     if (rest != null) 
         restaurants.Add(rest);
 }

您似乎无法运行多个查询,因此在检查另一个地址之前必须等待。