经纬度相关操作方法

# 计算起始经纬度偏移角度

function getAngle(lat1, lng1, lat2, lng2) {
  var dLon = lng2 - lng1
  var dLat = lat2 - lat1
  var angle = 0
  angle = (Math.atan2(dLat, dLon) * 180) / Math.PI
  angle = angle < 0 ? angle + 360 : angle
  return angle
}

# 计算起始经纬度距离

function getDistance(lat1, lng1, lat2, lng2) {
  var radLat1 = (lat1 * Math.PI) / 180.0
  var radLat2 = (lat2 * Math.PI) / 180.0
  var a = radLat1 - radLat2
  var b = (lng1 * Math.PI) / 180.0 - (lng2 * Math.PI) / 180.0
  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
  s = Math.round(s * 10000) / 10000
  return s
}

# 获取经纬度范围重心

getCenterPoint(data){
    var lng = 0.0,
        lat = 0.0;
    for(var i=0; i<data.length; i++){

        lng = lng + parseFloat(data[i].split(',')[0]);
        lat = lat + parseFloat(data[i].split(',')[1]);
    }
    lng = lng / data.length;
    lat = lat / data.length;
     return [lng, lat];
}

# 获取经纬度范围

getBounds(data){
    var lngMin = 180.0,
        lngMax = -180.0,
        latMin = 90.0,
        latMax = -90.0;
    for(var i=0; i<data.length; i++){
        var lng = parseFloat(data[i].split(',')[0]);
        var lat = parseFloat(data[i].split(',')[1]);
        if(lng < lngMin){
            lngMin = lng;
        }
        if(lng > lngMax){
            lngMax = lng;
        }
        if(lat < latMin){
            latMin = lat;
        }
        if(lat > latMax){
            latMax = lat;
        }
    }
    return [lngMin, latMin, lngMax, latMax];
}
lastUpdate: 2/24/2023, 5:32:22 PM