在更改页面时调用另一个http请求

时间:2014-01-16 15:14:43

标签: c# xaml mvvm windows-phone-8 here-api

我正在使用Windows手机应用程序,我正在使用这里休息地点api我的数据和我检索数据作为json,给我有关附近位置的信息,如此

position: [ 37.77704 , -122.39494 ]
distance: 1241
title: Caltrain-San Francisco
averageRating: 0.0
category: { Public transport }
icon: http://download.vcdn.nokia.com/p/d/places2/icons/categories/11.icon
vicinity: 700 4th St<br/>San Francisco, CA 94107
having: [ ]
type: urn:nlp-types:place
href: http://demo.places.nlp.nokia.com/places/v1/places/8409q8yy-a7395cccbfc4474ba469f3ddc03e041b;context=Zmxvdy1pZD00OWQxZDY0Zi0zODc5LTVlNDAtOWY4ZC04ZGFmNWMyMGZhZDFfMTM4OTg4NDQxMzUxNV8wXzM1MjkmcmFuaz0w?app_id=lp3VaO8uhOFe0akZ4J1m&app_code=JwL7MNaSarML92oqEDshAg
id: 8409q8yy-a7395cccbfc4474ba469f3ddc03e041b

我注意到,如果我打开

href: http://demo.places.nlp.nokia.com/places/v1/places/8409q8yy-a7395cccbfc4474ba469f3ddc03e041b;context=Zmxvdy1pZD00OWQxZDY0Zi0zODc5LTVlNDAtOWY4ZC04ZGFmNWMyMGZhZDFfMTM4OTg4NDQxMzUxNV8wXzM1MjkmcmFuaz0w?app_id=lp3VaO8uhOFe0akZ4J1m&app_code=JwL7MNaSarML92oqEDshAg

我将进入包含有关该位置的详细信息的其他页面,那么我如何获得所有这些数据?来自该href的一般和详细数据

我用来获取一般数据的方法是使用这个

WebClient client = new WebClient();
Uri uri = new Uri(transportURL1 + latitude + "%2C" + longitude + transportURL2, UriKind.Absolute);
client.DownloadStringCompleted += (s, e) =>
{
   if (e.Error == null)
    {
      RootObject result = JsonConvert.DeserializeObject<RootObject>(e.Result);
                        hereRestProperty = new ObservableCollection<Item>(result.results.items);
   }
   else
   {
       MessageBox.Show(e.Error.ToString());
   }
};
client.DownloadStringAsync(uri);

所以我的应用场景是显示常规位置数据的主页,当我点击其中一个位置数据时,它将导航到包含该href信息的详细信息页

怎么做?

编辑:我的工作是获取href并使用该href来调用http请求,但我不知道如何做到这一切......

edit2:环顾四周之后,我想出了主页与一般信息列表的想法,如果我点击列表中的一个项目,它将导航我将从该href请求的详细页面,但我只是不知道如何在mvvm aproach中执行...

1 个答案:

答案 0 :(得分:1)

如果可以安全地假设您尝试通过添加地点功能为您的应用添加价值,我建议对于 Windows Phone 8 ,您最好启动 HERE地图直接使用HERE Maps Launchers API

例如,如果你的应用程序是关于远足径那么添加一个功能来查找吃饭或靠近远足路径的地方是有意义的 - 但你不需要创建您自己的代码,用于请求,格式化和显示深入的位置数据,只需启动设备上已有的Maps应用程序(如果需要,从初始REST请求传入href)。这样做的好处有三个,首先,您可以在四行代码中添加此功能,其次,用户以熟悉的格式显示位置信息,最后从设备本身检索信息,这减少了额外的需求HTTP请求。

以下一项或多项任务可能有用:

  • ExploremapsShowPlaceTask可让您启动地图应用程序,地图以地图中显示的位置为中心。
  • ExploremapsSearchPlacesTask允许您使用搜索视图启动Google地图应用程序。
  • ExploremapsExplorePlacesTask允许您启动地图应用程序,其中显示了附近的景点。
  • PlacesShowDetailsByLocationTask允许您使用所选位置的地点视图启动地图应用程序。
  • PlacesShowDetailsByIdHrefTask允许您使用所选位置的地点视图启动地图应用程序。

请注意,如果 Windows Phone 8 设备上未安装 HERE Maps ,系统会指示用户从应用商店免费下载。