C# Web 服务 通过两个地名算出距离。比如北京到上海两个地名算出两地之间的距离。
解决方案 »
- 请教大家一个关于获取html代码的问题。。。。
- 用什么控件能实现来电显示功能?
- c#窗体怎么能循环播放背景音乐,不想用控件,想用api,可是我用了sndPlaySound播了一遍就停了。怎么能循环。请说细点,我很菜。
- 局域网内三台机器要保持时间的同步,用C#实现,请前辈们指点思路
- 100分急示解决方案Wins资源管理器已停止工作
- 求助IE插件源码
- 我想做个进入系统是在form中做的,一进去就见到主界面和密码提示框,密码提示框里面有确定和取消,确定之后就可以进入其它按钮可用了,取消之
- BHO 在 IE 6.0 正常,在 IE 8.0 完全没有反应,请帮忙
- 如何将C#程序自动转换为VB.NET程序
- Excel错误信息问题:Additional information: QueryInterface for interface Excel._Application failed.
- DataGridView控件设置某个单元格不显示图片
- wpf,如何设计win8风格的按钮
嗯,通过地址取出经纬度,然后再算距离。但是百度貌似没有google那种API啊?
string output = "json";
string ak = "百度ak值";
string url = string.Format("http://api.map.baidu.com/geocoder/v2/?address={0}&output={1}&ak={2}", address, output, ak); // 送出要求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
// 取得回應
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
//得到一个json字符串
string tmpArray = sr.ReadToEnd().ToString();在百度API上面找到了答案,谢谢楼上两位了。我纳闷为毛谷歌的那个取出来的老是0呢?
private const double EARTH_RADIUS = 6378.137; //地球半径 /// <summary>
/// 获得两点之间的距离 单位米
/// </summary>
/// <param name="lat1">A点纬度</param>
/// <param name="lng1">A点经度</param>
/// <param name="lat2">B点纬度</param>
/// <param name="lng2">B点经度</param>
/// <returns></returns>
public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
s = s * EARTH_RADIUS;
s = s * 10000000 / 10000;
return s;
}
private static double rad(double d)
{
return d * Math.PI / 180.0;
}