效果图说明:我在圆的中心点位,找到他某个直线距离的另个一点,标注两者之间的距离。如图所示是25000米。
沿纬度方向移动
在相同经度下,计算沿纬度方向移动1000米的新点位:
function calculateLatitudePoint(lat, lng, distance) {
const R = 6378137; // 地球半径,单位为米
const dLat = distance / R; // 距离转换为弧度
const newLat = lat + (dLat * 180 / Math.PI); // 将弧度转换为经纬度
return { lat: newLat, lng: lng };
}
const startLat = 30.0; // 起点纬度
const startLng = 120.0; // 起点经度
const distance = 1000; // 距离,单位为米
const newPoint = calculateLatitudePoint(startLat, startLng, distance);
console.log(newPoint); // 打印新的点位 {lat: newLat, lng: startLng}
沿经度方向移动
在相同纬度下,计算沿经度方向移动1000米的新点位:
function calculateLongitudePoint(lat, lng, distance) {
const R = 6378137; // 地球半径,单位为米
const dLng = distance / (R * Math.cos(lat * Math.PI / 180)); // 距离转换为弧度
const newLng = lng + (dLng * 180 / Math.PI); // 将弧度转换为经纬度
return { lat: lat, lng: newLng };
}
const startLat = 30.0; // 起点纬度
const startLng = 120.0; // 起点经度
const distance = 1000; // 距离,单位为米
const newPoint = calculateLongitudePoint(startLat, startLng, distance);
console.log(newPoint); // 打印新的点位 {lat: startLat, lng: newLng}