js根据经纬度计算两点距离

时间:2023-01-08 19:43:24

js根据经纬度计算两点距离

1.html

<button type="button" onclick="distanceByLnglat(116.95400,39.95400,116.95300,39.95300);">
				test me
			</button>

2.js

需要引入

<script type="text/javascript" src="js/jquery.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js">

function distanceByLnglat(lng1, lat1, lng2, lat2) {
			var radLat1 = Rad(lat1);
			var radLat2 = Rad(lat2);
			var a = radLat1 - radLat2;
			var b = Rad(lng1) - Rad(lng2);
			var 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 * 6378137.0; // 取WGS84标准参考椭球中的地球长半径(单位:m)
			s = Math.round(s * 10000) / 10000;
			alert(s);
			// //下面为两点间空间距离(非球面体)
			// var value= Math.pow(Math.pow(lng1-lng2,2)+Math.pow(lat1-lat2,2),1/2);
			// alert(value);
		}

		function Rad(d) {
			return d * Math.PI / 180.0;
		}
		// 7.2 获取当前地理位置  
		wx.config({
			debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  
			appId: '${appId}', // 必填,公众号的唯一标识  
			timestamp: '${ timestamp}', // 必填,生成签名的时间戳  
			nonceStr: '${ nonceStr}', // 必填,生成签名的随机串  
			signature: '${ signature}', // 必填,签名,见附录1  
			jsApiList: ['checkJsApi',
				'chooseImage',
				'previewImage',
				'uploadImage',
				'downloadImage',
				'getNetworkType', //网络状态接口
				'openLocation', //使用微信内置地图查看地理位置接口
				'getLocation' //获取地理位置接口
			] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2  
		});
		wx.getLocation({
			success: function(res) {
				alert(JSON.stringify(res));
			},
			cancel: function(res) {
				alert('用户拒绝授权获取地理位置');
			}
		});
		//初始化jsapi接口 状态
		wx.error(function(res) {
			alert("调用微信jsapi返回的状态:" + res.errMsg);
		});

效果:

js根据经纬度计算两点距离