使用纬度和经度计算两个城市之间的距离
Calculate the distance between two cities using latitude and longitude
我正在使用经纬度计算两个城市之间的距离(以公里为单位)。根据 Google 地图,距离是 33 km
但我得到的数字是 1038 km
.
我明白 Google 给出了实际距离,而我的代码中使用的半正弦公式给出了乌鸦飞行时的距离。
谁能帮我理解为什么两个数字之间会有如此巨大的差异?
let cities = [
{ city: "St Paul", lat: 44.9537, lon: 93.09 },
{ city: "Stillwater", lat: 36.1156, lon: 97.0584 },
];
function distance(lat1, lon1, lat2, lon2) {
var p = 0.017453292519943295;
var c = Math.cos;
var a = 0.5 - c((lat2 - lat1) * p) / 2 + (c(lat1 * p) * c(lat2 * p) * (1 - c((lon2 - lon1) * p))) / 2;
return 12742 * Math.asin(Math.sqrt(a));
}
let d = distance(cities[0].lat, cities[0].lon, cities[1].lat, cities[1].lon);
document.write(d.toFixed(1) + " km");
我已经从另一个站点验证了 1038 公里 https://www.movable-type.co.uk/scripts/latlong.html
你也可以通过比例尺来大致看一下距离(大概是1000km)。
你的 33 公里是错误的,或者你从某个地方(另一个同名城镇?)得到了错误的 long/lat。
我正在使用经纬度计算两个城市之间的距离(以公里为单位)。根据 Google 地图,距离是 33 km
但我得到的数字是 1038 km
.
我明白 Google 给出了实际距离,而我的代码中使用的半正弦公式给出了乌鸦飞行时的距离。
谁能帮我理解为什么两个数字之间会有如此巨大的差异?
let cities = [
{ city: "St Paul", lat: 44.9537, lon: 93.09 },
{ city: "Stillwater", lat: 36.1156, lon: 97.0584 },
];
function distance(lat1, lon1, lat2, lon2) {
var p = 0.017453292519943295;
var c = Math.cos;
var a = 0.5 - c((lat2 - lat1) * p) / 2 + (c(lat1 * p) * c(lat2 * p) * (1 - c((lon2 - lon1) * p))) / 2;
return 12742 * Math.asin(Math.sqrt(a));
}
let d = distance(cities[0].lat, cities[0].lon, cities[1].lat, cities[1].lon);
document.write(d.toFixed(1) + " km");
我已经从另一个站点验证了 1038 公里 https://www.movable-type.co.uk/scripts/latlong.html
你也可以通过比例尺来大致看一下距离(大概是1000km)。
你的 33 公里是错误的,或者你从某个地方(另一个同名城镇?)得到了错误的 long/lat。