使用者需要根据实际情况,稍做修改。废话不多说,直接上代码。
var sphereDistance = function (a, b) {
var ax = null;
var ay = null;
var bx = null;
var by = null;
for (var key in a) {
if (ax == null) {
ax = a[key] * (Math.PI / 180);
} else if (ay == null) {
ay = a[key] * (Math.PI / 180);
}
}
for (var key in b) {
if (bx == null) {
bx = b[key] * (Math.PI / 180);
} else if (by == null) {
by = b[key] * (Math.PI / 180);
}
}
var sin_x1 = Math.sin(ax), cos_x1 = Math.cos(ax);
var sin_y1 = Math.sin(ay), cos_y1 = Math.cos(ay);
var sin_x2 = Math.sin(bx), cos_x2 = Math.cos(bx);
var sin_y2 = Math.sin(by), cos_y2 = Math.cos(by);
var cross_prod = cos_y1 * cos_x1 * cos_y2 * cos_x2 + cos_y1 * sin_x1 * cos_y2 * sin_x2 + sin_y1 * sin_y2;
if (cross_prod >= 1 || cross_prod <= -1) {
if (!(Math.abs(cross_prod) - 1 < 0.000001)) {
return false;
}
return cross_prod > 0 ? 0 : Math.PI;
}
return Math.acos(cross_prod);
};