/*基于高德地图计算*/
/**
* 计算两点间的角度
* @param start 起点经纬度
* @param end 终点经纬度
* @return
*/
calcAngle(start, end) {
// console.log('start, end',start, end);
var p_start = map.lngLatToContainer(start),
p_end = map.lngLatToContainer(end);
var diff_x = p_end.x - p_start.x,
diff_y = p_end.y - p_start.y;
return 360*Math.atan2(diff_y, diff_x)/(2*Math.PI)+90;
},
/**
* 根据一个点的经纬度和距离得到另外一个点的经纬度
* @param distance
* @param latlngA
* @param angle:角度
* @return
*/
getLngLat(distance, latlngA, angle){
let lat =latlngA.getLat()+(distance*Math.cos(angle*Math.PI/180.0))/111.0;
let lng =latlngA.getLng()+(distance*Math.sin(angle*Math.PI/180.0))/(111.0*Math.cos(latlngA.getLat()*Math.PI/180.0));
// console.log('新建点与原点的距离:',Math.round(latlngA.distance(new AMap.LngLat(lng,lat))));
return new AMap.LngLat(lng,lat);
},
//两点计算距离
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 ;// EARTH_RADIUS 赤道半径(单位km);
s = Math.round(s * 10000) / 10000;
return s;
},
地图计算 角度、距离、终点
最新推荐文章于 2024-05-06 10:59:29 发布