class point{
var lng:Double=0
var lat:Double=0
def point(x:Double,y:Double)
{
lng=x
lat=y
}
}
object PointDistance {
private val EARTHRADIUS = 6370996.81;
private val PI:Double = 3.14159265359; // PI
//将度转化为弧度
//@param {degree} Number 度
//@returns {Number} 弧度
private def degreeToRad (degree:Double):Double={
return Math.PI * degree/180;
}
//将v值限定在a,b之间,经度使用
private def _getLoop(v:Double, a:Double, b:Double):Double={
var n=v
while( n > b){
n -= b - a
}
while(n < a){
n += b - a
}
return n;
}
//将v值限定在a,b之间,纬度使用
private def _getRange(v:Double, a:Double, b:Double):Double={
var tem:Double=
if (v > a) v
else a
tem=
if(tem > b) b
else tem
return tem
}
//计算两点之间的距离,两点坐标必须为经纬度
// @param {point1} Point 点对象
//@param {point2} Point 点对象
//@returns {Number} 两点之间距离,单位为米
def getDistance(point1:point, point2:point):Double={
point1.lng = _getLoop(point1.lng, -180, 180);
point1.lat = _getRange(point1.lat, -74, 74);
point2.lng = _getLoop(point2.lng, -180, 180);
point2.lat = _getRange(point2.lat, -74, 74);
var x1 = degreeToRad(point1.lng);
var y1 = degreeToRad(point1.lat);
var x2 = degreeToRad(point2.lng);
var y2 = degreeToRad(point2.lat);
return EARTHRADIUS * Math.acos((Math.sin(y1) * Math.sin(y2) + Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1)));
}
}
var lng:Double=0
var lat:Double=0
def point(x:Double,y:Double)
{
lng=x
lat=y
}
}
object PointDistance {
private val EARTHRADIUS = 6370996.81;
private val PI:Double = 3.14159265359; // PI
//将度转化为弧度
//@param {degree} Number 度
//@returns {Number} 弧度
private def degreeToRad (degree:Double):Double={
return Math.PI * degree/180;
}
//将v值限定在a,b之间,经度使用
private def _getLoop(v:Double, a:Double, b:Double):Double={
var n=v
while( n > b){
n -= b - a
}
while(n < a){
n += b - a
}
return n;
}
//将v值限定在a,b之间,纬度使用
private def _getRange(v:Double, a:Double, b:Double):Double={
var tem:Double=
if (v > a) v
else a
tem=
if(tem > b) b
else tem
return tem
}
//计算两点之间的距离,两点坐标必须为经纬度
// @param {point1} Point 点对象
//@param {point2} Point 点对象
//@returns {Number} 两点之间距离,单位为米
def getDistance(point1:point, point2:point):Double={
point1.lng = _getLoop(point1.lng, -180, 180);
point1.lat = _getRange(point1.lat, -74, 74);
point2.lng = _getLoop(point2.lng, -180, 180);
point2.lat = _getRange(point2.lat, -74, 74);
var x1 = degreeToRad(point1.lng);
var y1 = degreeToRad(point1.lat);
var x2 = degreeToRad(point2.lng);
var y2 = degreeToRad(point2.lat);
return EARTHRADIUS * Math.acos((Math.sin(y1) * Math.sin(y2) + Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1)));
}
}