你究竟如何使用BING REST api(特别是ROUTES部分)在ASP.NET中获得行车距离。
我已经在谷歌上搜索了这个答案,但没有一个是即将发布的。
我找到了url字符串,例如:
http://dev.virtualearth.net/REST/v1/Routes/Driving?waypoint.0=redmond&heading=90&waypoint.1=seattle&du=mi&key=BingMapsKey
太棒了!但是如何从ASP调用呢?
我也找到了这段代码:
private void GetResponse(Uri uri, Action<HttpResponse> callback)
{
WebClient wc = new WebClient();
wc.OpenReadCompleted += (o, a) =>
{
if (callback != null)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(HttpResponse));
callback(ser.ReadObject(a.Result) as HttpResponse);
}
};
wc.OpenReadAsync(uri);
}
这是“发布网络请求的通用方法”。但是,再次,你怎么称呼它?我发现它不需要返回类型令人困惑。
为了调用它,我找到了这样的代码:
string key = "YOUR_BING_MAPS_KEY or SESSION_KEY";
string query = "1 Microsoft Way, Redmond, WA";
Uri geocodeRequest = new Uri(string.Format("http://dev.virtualearth.net/REST/v1/Locations?q={0}&key={1}", query, key));
GetResponse(geocodeRequest, (x) =>
{
Console.WriteLine(x.ResourceSets[0].Resources.Length + " result(s) found.");
Console.ReadLine();
});
但是当我将这个添加到项目中时,我会在阳光下出现每一个错误。所以,我被卡住了。
我是一个完整的ASP初学者,并没有找到任何帮助的在线文档。
P.S。我有一个BING api密钥,并在上面的代码中使用它。
答案 0 :(得分:1)
我不是这方面的专家,但下面为我编译。还要确保添加BING文档中提到的数据结构:
protected void Page_Load(object sender, EventArgs e)
{
string key = "YOUR KEY";
string query = "ADDRESS";
Uri geocodeRequest = new Uri(string.Format("http://dev.virtualearth.net/REST/v1/Locations?q={0}&key={1}", query, key));
GetResponse(geocodeRequest, (x) =>
{
Console.WriteLine(x.ResourceSets[0].Resources.Length + " result(s) found.");
Console.ReadLine();
});
}
引用另一个stackoverflow问题:
您使用的文档底部指向您在此处提供的REST服务所需的数据合同:http://msdn.microsoft.com/en-us/library/jj870778.aspx
只需创建一个空的C#文件,然后粘贴到C#数据合同中。然后将命名空间添加到此类:
using BingMapsRESTService.Common.JSON;