用Wex5实现计算两个经纬度之间的距离

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

4、Data需要增加一个计算列

过程详解:

1、首先利用插件获取商家所在的经纬度

2、获取到订单中,客户下单时的经纬度(数据库中)

3、以上两个经纬度进行计算

详细解说:

1、在js文件头引入百度地图插件和谷歌地图插件

define(function(require) {
	var $ = require("jquery");
	var justep = require("$UI/system/lib/justep");
	require("cordova!cordova-plugin-geolocation");
	require("cordova!com.justep.cordova.plugin.baidulocation");
2、在适当的事件中获取到用户的经纬度,并将经纬度数据保存到baasData中

	// 获取商家位置方法
	Model.prototype.addressLoad = function(event) {
		var locationData = this.comp('locationData');
		var successCallback = function(pos) {
			var lng = pos.coords.longitude;
			var lat = pos.coords.latitude;
			locationData.setValue("curLng", lng);
			locationData.setValue("curLat", lat);
			locationData.saveData();
		};

		var errorCallback = function(e) {
			justep.Util.hint("获取位置失败,暂时使用您的默认地址", {
				"type" : "danger",
				"delay" : 2000
			});
		};
		navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
	};
3、将用户的经纬度和订单中保存的经纬度进行计算

说明:订单中客户的经纬度,是下单用户在下单的时候,用插件获取到经纬度保存到数据库中

// 计算距离的方法
	Model.prototype.distancer = function(row) {
		var locationData = this.comp('locationData');
		var merchantData = this.comp('merchantData');
		// 获取您现在所在的经纬度
		var lat1 = locationData.val("curLat");
		var lng1 = locationData.val("curLng");
		// 获取订单所在的经纬度
		var lat2 = merchantData.val("curLat");
		var lng2 = merchantData.val("curLng");
		var R = 6378137.0;
		function Rad(d) {
			return d * Math.PI / 180.0;// 经纬度转换成三角函数中度分表形式。
		}
		// 计算距离
		function GetDistance(lat1, lng1, lat2, lng2) {

			var radLat1 = Rad(lat1);
			var radLat2 = Rad(lat2);
			var a = radLat1 - radLat2;
			var b = Rad(lng1) - Rad(lng2);

			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)));
			var s1 = Math.round(s) / 1000;
			var s2 = s1.toFixed(2);
			return s2;
		}
		return GetDistance(lat1, lng1, lat2, lng2) + "km";

	};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值