计算某地点到当前定位的距离,并重新对数组进行排序

1.获取当前定位
getLocal() {
    var that = this
    uni.getLocation({
        type: 'wgs84',
        success: function (res) {
           // 获取到经纬度后,调用 computeDistance对数组进行排序
           that.computeDistance(res.latitude,res.longitude)
        }
  )}          
},
2.计算距离然后排序

(1)百度到其他大神的计算两个经纬度距离的方法

/**
 * js获取两个经纬度之间的距离
 * @param lat1 第一点的纬度
 * @param lng1 第一点的经度
 * @param lat2 第二点的纬度
 * @param lng2 第二点的经度
 * @returns {Number}
 */
distance(la1, lo1, la2, lo2) {
    var La1 = la1 * Math.PI / 180.0;
    var La2 = la2 * Math.PI / 180.0;
    var La3 = La1 - La2;
    var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2)));
    s = s * 6378.137;
    s = Math.round(s * 10000) / 10000;
    s = s.toFixed(2);
    return s;
},

(2) 调用接口获取到医院的列表,然后取得每个医院的经纬度与用户当前定位的经纬度进行计算

computeDistance(latitude,longitude) {
    var that = this
    // 获取医院列表
    uni.request({
        url: app.apiUrl + 'small/index/index',
        success: (res) => {
            that.poslist = res.data.poslist
            // 计算医院列表中经纬度与当前的距离,并添加distance属性到数组的元素中 key:distance vaule: 距离
            for (let i=0; i<that.poslist.length; i++) {
            // 调用distance的方法计算两点的距离,并把距离值赋值给医院数组对象中的新属性distance
                that.poslist[i].distance = (that.distance(latitude,longitude,that.poslist[i].latitude,that.poslist[i].longitude))
                // 根据新属性值distance对数组重新排序,距离最短排前面
                that.poslist.sort(function(a,b){
                    return a.distance-b.distance;
                })
            }
        }
    })
},
原文链接:segmentfault.com

上一篇:Egg React SSR 服务端渲染 构建流程
下一篇:uni-app 上传图片、预览图片

相关推荐

  • (深入)使用jQuery复制数组(复制)

    Communitymorgancodes(https://stackoverflow.com/users/1/community)提出了一个问题:(Deep) copying an array usi...

    2 年前
  • 齐姐漫画:排序算法(三)之「快排」

    (/public/upload/782bd5bd01ad2529a5be694c03181b79) (/public/upload/7da8caf20d4b7d3a530e81e69b60...

    2 天前
  • 顺时针螺旋输出二维数组

    给定一个数组,将该数组从第一个元素开始顺时针打印出来。 思路: 先考虑打印周围一圈的问题,然后可以使用递归求解,直到最后全都打印完为止。也就是先打印最外围的数,然后对于元二维数组中间的数组作为一个新的...

    2 年前
  • 项目中数组循环的一个优化案例

    最近在项目中遇到一个性能问题,根据一些select选择框和一些单选按钮的值综合起来对一个数组进行遍历筛选,并获取最终符合条件的数据,但由于这个数组的长度过长,达到6000,甚至更长,所以导致筛选之后的...

    3 个月前
  • 页面div居中定位

    在编写很多时候页面的时候我们都需要布局居中对齐的,这里引用一个小案例讲解一下水平垂直居中对齐 预期效果 图片描述(https://img.javascriptcn.com/f8914d...

    2 年前
  • 面试官在“逗”你系列:数组去重你会几种呀?

    前言 数组去重是一个老生常谈的话题,也是前端童鞋在面试时的一道高频题。本文将深入的探索数组去重的原理及实现,为各位小伙伴提供多种可以反手“调戏”面试官的解决方案。 话不多说,上去就来一梭子... 数组...

    14 天前
  • 面试官在“逗”你系列:数组去重你会几种呀?

    前言 数组去重是一个老生常谈的话题,也是前端童鞋在面试时的一道高频题。本文将深入的探索数组去重的原理及实现,为各位小伙伴提供多种可以反手“调戏”面试官的解决方案。 话不多说,上去就来一梭子... 数组...

    15 天前
  • 随着Nodejs JSON对象响应(转换对象数组JSON字符串)

    Rudolf Olahclimboid(https://stackoverflow.com/users/9903/rudolfolah)提出了一个问题:Responding with a JSON o...

    2 年前
  • 阵列。sort()没有;T排序数字正确[复制]

    Some Guy(https://stackoverflow.com/users/401137/someguy)提出了一个问题:Array.sort() doesn't sort numbers co...

    2 年前
  • 锚点定位被顶部固定导航栏遮住的解决方案

    很多网站都有一个固定在上方的导航栏,方便用户搜索和跳转到其他页面。 同时为了方便用户浏览长文档,都会加上目录,点击段落标题跳转到段落所在的位置, 如图所示: (/public/upload/df5...

    2 个月前

官方社区

扫码加入 JavaScript 社区