如何在Windows Phone 8上的“诺基亚地图”中获取地点名称
本文关键字:诺基亚地图 获取 地图 诺基亚 Windows Phone 上的 | 更新日期: 2023-09-27 18:21:27
我想在Windows Phone 8中使用Maps API从我的当前位置获取一个地方的名称(类似于Foursquare或Google Maps)。我已经可以使用本教程中的代码获取我的当前位置了。
有人能帮我吗?
您可以使用ReverseGeocodeQuery类。
var rgc = new ReverseGeocodeQuery();
rgc.QueryCompleted += rgc_QueryCompleted;
rgc.GeoCoordinate = myGeoCoord; //or create new gc with your current lat/lon info
rgc.QueryAsync();
然后,您可以使用传入的事件参数的Result属性从rgc_QueryCompleted
事件处理程序中获取数据。
如果@keyboardP的答案还不够,这里(希望)有一个工作示例来获取有关您的位置的信息。没有可以查找的"名称"属性,至少不能从API一侧查找。
public async Task<MapLocation> ReverseGeocodeAsync(GeoCoordinate location)
{
var query = new ReverseGeocodeQuery { GeoCoordinate = location };
if (!query.IsBusy)
{
var mapLocations = await query.ExecuteAsync();
return mapLocations.FirstOrDefault();
}
return null;
}
为此,您需要添加以下异步查询的扩展方法(来自compiledexperience.com博客)
public static class GeoQueryExtensions
{
public static Task<T> ExecuteAsync<T>(this Query<T> query)
{
var taskSource = new TaskCompletionSource<T>();
EventHandler<QueryCompletedEventArgs<T>> handler = null;
handler = (sender, args) =>
{
query.QueryCompleted -= handler;
if (args.Cancelled)
taskSource.SetCanceled();
else if (args.Error != null)
taskSource.SetException(args.Error);
else
taskSource.SetResult(args.Result);
};
query.QueryCompleted += handler;
query.QueryAsync();
return taskSource.Task;
}
}