C# Web 服务 通过两个地名算出距离

Honyun100 2013-10-09 04:28:43
C# Web 服务 通过两个地名算出距离。比如北京到上海两个地名算出两地之间的距离。
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 7 楼 basibasi 的回复:
百度那个可以解决,但如果能再本地解决岂不更好,我这里有现成的方法, 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; }
basibasi 2013-10-10
  • 打赏
  • 举报
回复
百度那个可以解决,但如果能再本地解决岂不更好,我这里有现成的方法, 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; }
maysoft 2013-10-09
  • 打赏
  • 举报
回复
还不如手输入地点。
Honyun100 2013-10-09
  • 打赏
  • 举报
回复
引用 3 楼 hdhai9451 的回复:
用GPS全球定位系统做的好,否则得到的数据意义不大
项目的某个功能要这么个实现,就测测距离。我也觉得没多大意义~
Honyun100 2013-10-09
  • 打赏
  • 举报
回复
        string address = "达州";
        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呢?
Andy__Huang 2013-10-09
  • 打赏
  • 举报
回复
用GPS全球定位系统做的好,否则得到的数据意义不大
Honyun100 2013-10-09
  • 打赏
  • 举报
回复
引用 1 楼 basibasi 的回复:
两地名直接算距离? 在怎么也要提供经纬度吧,不然你怎么算?
嗯,通过地址取出经纬度,然后再算距离。但是百度貌似没有google那种API啊?
basibasi 2013-10-09
  • 打赏
  • 举报
回复
两地名直接算距离? 在怎么也要提供经纬度吧,不然你怎么算?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧