经纬度相关操作方法
# 计算起始经纬度偏移角度
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];
}