在赤道坐标中的小数点后 5 位 (0.00001) = 1.1057 米纬度和 1.1132 米经度。
随着坐标从赤道移动到两极,经度值减小。
学位|纬度 |经度
------------------------------
0° | 1.1057 米 |1.1132 米
15° | 1.1064 米 |1.0755 米
30° | 1.1085 米 |0.9648 米
45° | 1.1113 米 |0.7884 米
60° | 1.1141 米 |0.5580 米
75° | 1.1161 米 |0.2890 米
90° | 1.1169 米 |0.0000 米
如果您的距离很小,您可以使用毕达哥拉斯校正纬度或使用Haversine。
以下代码使用Haversine
var lat1 =55.00001;//Point 1 nearest
var lng1 =-2.00001 ;
//var lat1 =55.00002;//Point 2 nearest
//var lng1 =-2.00002 ;
//Array of points
var coordArray = [[55.00000,-2.00000],[55.00003,-2.00003],[55.00006,-2.00006],[55.00009,-2.00009],[55.00012,-2.00012]];
function toRad(Value) {
/** Converts numeric degrees to radians */
return Value * Math.PI / 180;
}
function Round(Number, DecimalPlaces) {
return Math.round(parseFloat(Number) * Math.pow(10, DecimalPlaces)) / Math.pow(10, DecimalPlaces);
}
function haversine(lat1,lat2,lng1,lng2){
rad = 6371000; // meters
deltaLat = toRad(lat2-lat1);
deltaLng = toRad(lng2-lng1);
lat1 = toRad(lat1);
lat2 = toRad(lat2);
a = Math.sin(deltaLat/2) * Math.sin(deltaLat/2) + Math.sin(deltaLng/2) * Math.sin(deltaLng/2) * Math.cos(lat1) * Math.cos(lat2);
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return rad * c;
}
function calculate(){
var result = haversine(lat1,coordArray [0][0],lng1,coordArray [0][1]);
var index = 0;
for (var i=1;i<coordArray.length;i++){
var ans = haversine(lat1,coordArray [i][0],lng1,coordArray [i][1]);
if (ans < result){
result = ans;
index++;
}
}
document.write("Result = " +Round(result,2)+ " Meters Point = "+ (index+1));
}
见Fiddle