起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2462|回复: 4

[分享] 根据经纬度计算两点之间的距离!

[复制链接]

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
发表于 2016-8-14 14:25:23 | 显示全部楼层 |阅读模式
本帖最后由 不羁的风 于 2016-8-14 15:16 编辑

先说实现过程和效果!!!
1、客户下单,将客户下单时所在的经纬度存到数据库
2、商家接单,将商家打开App时所在的经纬度保存!
3、根据以上两个经纬度,计算两者之间的距离,并显示(list组件),商家可以看到订单距离他多远
4、Data需要增加一个计算列




C9A1.tmp.jpg
4622.tmp.jpg
26F1.tmp.jpg
qq:7953899

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-8-14 14:35:31 | 显示全部楼层
  1. // 计算距离的方法
  2.         Model.prototype.distancer = function(row) {
  3.                 //获取您现在所在的经纬度
  4.                 var lat1 = locationData.val("curLat");
  5.                 var lng1 = locationData.val("curLng");
  6.                 //获取订单所在的经纬度
  7.                 var lat2 = row.val("curLat");
  8.                 var lng2 = row.val("curLng");
  9.                 var R = 6378137.0;
  10.                 function Rad(d) {
  11.                         return d * Math.PI / 180.0;// 经纬度转换成三角函数中度分表形式。
  12.                 }
  13.                 // 计算距离
  14.                 function GetDistance(lat1, lng1, lat2, lng2) {

  15.                         var radLat1 = Rad(lat1);
  16.                         var radLat2 = Rad(lat2);
  17.                         var a = radLat1 - radLat2;
  18.                         var b = Rad(lng1) - Rad(lng2);

  19.                         var s = 2 * R * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  20.                         var s1 = Math.round(s) / 1000;
  21.                         var s2 = s1.toFixed(2);
  22.                         return s2;
  23.                 }
  24.                 return GetDistance(lat1, lng1, lat2, lng2) + "km";

  25.         };
复制代码
qq:7953899
回复 支持 反对

使用道具 举报

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-8-14 14:35:55 | 显示全部楼层
以上,欢迎指正!
qq:7953899
回复 支持 反对

使用道具 举报

55

主题

207

帖子

551

积分

高级会员

Rank: 4

积分
551
QQ
发表于 2016-8-15 09:22:58 | 显示全部楼层
赞!  这个好像计算的是直线距离,如果能够根据地图实际路径计算实际距离就最好了。
回复 支持 反对

使用道具 举报

93

主题

570

帖子

1411

积分

金牌会员

Rank: 6Rank: 6

积分
1411
QQ
 楼主| 发表于 2016-8-15 09:45:12 | 显示全部楼层
forrlx 发表于 2016-8-15 09:22
赞!  这个好像计算的是直线距离,如果能够根据地图实际路径计算实际距离就最好了。 ...

可以的,不过我的需求是算直线距离。路程的话可以自己琢磨下
qq:7953899
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-23 09:52 , Processed in 0.060792 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表