|
|
@@ -61,37 +61,46 @@
|
|
|
<script>
|
|
|
var QQMapWX = require('../qqmap-wx-jssdk.js');
|
|
|
let qqmapsdk;
|
|
|
-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 *
|
|
|
- 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 * 6378.137; // EARTH_RADIUS;
|
|
|
- s = Math.round(s * 10000) / 10000; //输出为公里
|
|
|
-
|
|
|
- var distance = s;
|
|
|
- var distance_str = '';
|
|
|
+//This function takes in latitude and longitude of two location and returns the distance between them as the crow flies (in km)
|
|
|
+function getDistance(lat1, lon1, lat2, lon2) {
|
|
|
+ var R = 6371; // km
|
|
|
+ var dLat = toRad(lat2 - lat1);
|
|
|
+ var dLon = toRad(lon2 - lon1);
|
|
|
+ var dlat1 = toRad(lat1);
|
|
|
+ var dlat2 = toRad(lat2);
|
|
|
|
|
|
- if (parseInt(distance) >= 1) {
|
|
|
- distance_str = distance.toFixed(1) + 'km';
|
|
|
- } else {
|
|
|
- distance_str = distance * 1000 + 'm';
|
|
|
+ var a =
|
|
|
+ Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
|
|
+ Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(dlat1) * Math.cos(dlat2);
|
|
|
+ var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
|
+ var d = R * c;
|
|
|
+ if (d < 1) {
|
|
|
+ return parseInt(d * 1000) + 'm';
|
|
|
}
|
|
|
- return s;
|
|
|
+ return d.toFixed(1).replace(/\.0$/, '') + 'km';
|
|
|
}
|
|
|
+
|
|
|
+// Converts numeric degrees to radians
|
|
|
+function toRad(Value) {
|
|
|
+ return (Value * Math.PI) / 180;
|
|
|
+}
|
|
|
+
|
|
|
export default {
|
|
|
created() {
|
|
|
+ // wx.getLocation({
|
|
|
+ // type: 'wgs84',
|
|
|
+ // success: res => {
|
|
|
+ // this.location = {
|
|
|
+ // lat: res.latitude,
|
|
|
+ // lng: res.longitude
|
|
|
+ // };
|
|
|
+ // console.log({
|
|
|
+ // lat: res.latitude,
|
|
|
+ // lng: res.longitude
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+
|
|
|
qqmapsdk = new QQMapWX({
|
|
|
key: 'MC4BZ-4QDWP-B5ZDD-VS3HX-NHBAO-CRBOQ'
|
|
|
});
|
|
|
@@ -262,13 +271,7 @@ export default {
|
|
|
if (arr.length === 2) {
|
|
|
i.lat = arr[1];
|
|
|
i.lng = arr[0];
|
|
|
- let distance = getDistance(this.location.lat, i.lat, this.location.lng, i.lng);
|
|
|
- if (distance > 1000) {
|
|
|
- distance = (distance / 1000).toFixed(1) + 'km';
|
|
|
- } else {
|
|
|
- distance = parseInt(distance) + 'm';
|
|
|
- }
|
|
|
- i.distance = distance;
|
|
|
+ i.distance = getDistance(this.location.lat, this.location.lng, i.lat, i.lng);
|
|
|
}
|
|
|
}
|
|
|
});
|