zoukankan      html  css  js  c++  java
  • 根据两点的经纬度查询两点间的距离

    基于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");
    }
    },

    忍一时,越想越气; 退一步,哎呦我去!
  • 相关阅读:
    hdu 1083 Courses
    hdu 1068 Girls and Boys
    hdu 2988 Dark roads
    hdu 1879 继续畅通工程
    hdu 1875 畅通工程再续
    hdu 1233 还是畅通工程
    hdu 4040 (贪心算法)
    FZU 2111 Min Number
    Reconstructing Cloud-Contaminated Multispectral Images With Contextualized Autoencoder Neural Networks(自编码机重建云污染区)
    跑深度学习网络遇到的一些错误总结
  • 原文地址:https://www.cnblogs.com/l-ialiu/p/14653094.html
Copyright © 2011-2022 走看看