• 根据两点的经纬度查询两点间的距离


    基于vue

    调用的方法里传入四个参数,分别是两个点的纬度经度

    this.CaleLength(第一个点的纬度,第一个点的经度,第二个点的纬度,第二个点的经度)

    this.CaleLength(34.76984, 113.769852, 34.76984, 114.769852)

    // 经纬度转换为度分秒形式
    rad(d) {
    return d * Math.PI / 180.0;
    },
    // 计算两点经纬度以及两点间的距离(起始地点与结束地点都是东经北纬)
    CaleLength(slat, slong, elat, elong) {
    // 第一个点的经纬度(当前地点) (起始地点的纬度 startLatitude 起始地点的经度 startLongitude )
    let sLat = this.rad(slat)
    let sLong = this.rad(slong)

    // 第二个点的经纬度 (结束地点的纬度 endLatitude 结束地点的经度 endLongitude )
    let eLat = this.rad(elat)
    let eLong = this.rad(elong)

    // 设置地球的半径为6371km
    const EARTH_RADIUS = 6371

    // 得到两点见的经纬差
    let calcLat = eLat - sLat
    let calcLong = eLong - sLong

    // 判断经纬差是否为负
    if (calcLat < 0) {
    calcLat = Math.abs(calcLat)
    }
    if (calcLong < 0) {
    calcLong = Math.abs(calcLong)
    }

    // 同样可以计算到距离
    // let SS = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(calcLat / 2), 2) + Math.cos(sLat) * Math.cos(eLat) *
    // Math.pow(Math.sin(calcLong / 2), 2)))
    // SS = SS * EARTH_RADIUS
    // console.log(SS + "km");

    let S = EARTH_RADIUS * Math.acos(Math.cos(sLat) * Math.cos(eLat) * Math.cos(calcLong) + Math.sin(sLat) *
    Math.sin(eLat))
    S = Math.round(S * 100000) / 100
    if (S > 1000) {
    console.log(Math.round(S / 1000) + 'KM');
    } else {
    console.log(S + "M");
    }
    },

    忍一时,越想越气; 退一步,哎呦我去!
  • 相关阅读:
    时间选择器和日期选择器
    paip.c++ qt 项目工程互相引用的方法
    leetcode_question_85 Largest Rectangle in Histogram
    在VirtualBox虚拟机上采集Fedora15系统
    Oracle
    VC6.0调试大全
    oracle中的exists 和not exists 用法详解
    vi常用命令
    【虚拟化实战】容灾设计之四VPLEX
    CentOS6.3 安装配置 ant
  • 原文地址:https://www.cnblogs.com/l-ialiu/p/14653094.html
Copyright © 2020-2023  润新知