Javascript 如何计算与距离不同的位置

Javascript 如何计算与距离不同的位置,javascript,gis,Javascript,Gis,我是地理信息系统新手。我在用JavaScript工作 function(lat, long, distance){ //can i calculate lat_difference, long difference } 假设有中心拉特朗。另一个点是远离中心的n个斜接中的目标(latlong)。如何计算从中心到斜接中n的位置差(中心-斜接) function(lat, long, distance){ //can i calculate lat_difference, long diff

我是地理信息系统新手。我在用JavaScript工作

function(lat, long, distance){
  //can i calculate lat_difference, long difference
}
假设有中心拉特朗。另一个点是远离中心的n个斜接中的目标(latlong)。如何计算从中心到斜接中n的位置差(中心-斜接)

function(lat, long, distance){
  //can i calculate lat_difference, long difference
}
伙计们,请帮帮我

function(lat, long, distance){
  //can i calculate lat_difference, long difference
}
我们认为地球是球形的。
  function distance(lat1, lon1, lat2, lon2) {
    var radius = 6371e3; // meters
    var dLon = gis.toRad(lon2 - lon1),
        lat1 = gis.toRad(lat1),
        lat2 = gis.toRad(lat2),
        distance = Math.acos(Math.sin(lat1) * Math.sin(lat2) +
            Math.cos(lat1) * Math.cos(lat2) * Math.cos(dLon)) * radius;
    return distance;
  }
function(lat, long, distance){
  //can i calculate lat_difference, long difference
}
上面的javascript函数用于计算距离

function(lat, long, distance){
  //can i calculate lat_difference, long difference
}
这是您的代码:-

function(lat, long, distance){
  //can i calculate lat_difference, long difference
}
<script>

Math.radians = function(degrees) {
  return degrees * Math.PI / 180;
};


function calculateDistance(lat,lon,lat_center,lon_center){

var distance = ( 6371 * Math.acos( Math.cos( Math.radians(lat) ) * Math.cos( Math.radians( lat_center ) ) 
                        * Math.cos( Math.radians( lon_center ) - Math.radians(lon) ) + Math.sin( Math.radians(lat) ) * Math.sin(Math.radians(lat_center)) ) )*1000;
console.log(distance+"  meter");
return distance;
}


var lat = '38.898556';
var lon = '-77.037852';

var lat_center = '38.897147';
var lon_center = '-77.043934';

calculateDistance(lat,lon,lat_center,lon_center);//will return 549 meter

//for getting lat and lon from a distance from a given point

//lat1 = latitude of start point in degrees

//long1 = longitude of start point in degrees

//d = distance in KM

//angle = bearing in degrees

function get_gps_distance(lat1,long1,d,angle)
{
    //# Earth Radious in KM
    var R = 6378.14;

    //# Degree to Radian
    var latitude1 = lat1 * (Math.PI/180);
    var longitude1 = long1 * (Math.PI/180);
    brng = angle * (Math.PI/180);

    latitude2 = Math.asin(Math.sin(latitude1)*Math.cos(d/R) + Math.cos(latitude1)*Math.sin(d/R)*Math.cos(brng));
    longitude2 = longitude1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(latitude1),Math.cos(d/R)-Math.sin(latitude1)*Math.sin(latitude2));

   // # back to degrees
    latitude2 = latitude2 * (180/Math.PI);
    longitude2 = longitude2 * (180/Math.PI);

   // # 6 decimal for Leaflet and other system compatibility
   lat2 = latitude2;
   long2 =longitude2;
var tab = {};
   // Push in array and get back
   tab[0] = lat2;
   tab[1] = long2;
   return tab;
 }

 get_gps_distance('38.898556','-77.037852',.549,90);

</script>

Math.radians=函数(度){
返回度*Math.PI/180;
};
函数计算距离(纬度、经度、纬度中心、经度中心){
变量距离=(6371*Math.acos(Math.cos(Math.radians(lat))*Math.cos(Math.radians(lat_center))
*Math.cos(Math.radians(lon_中心)-Math.radians(lon))+Math.sin(Math.radians(lat_中心))*Math.sin(Math.radians(lat_中心)))*1000;
控制台日志(距离+米);
返回距离;
}
var lat='38.898556';
var-lon='-77.037852';
var lat_中心='38.897147';
var lon_中心='-77.043934';
计算距离(纬度、经度、纬度中心、经度中心)//将返回549米
//用于从距离给定点的距离处获取lat和lon
//lat1=起点的纬度(度)
//long1=起点的经度(度)
//d=距离,单位为KM
//角度=以度为单位的轴承
函数获取gps距离(纬度1、长1、d、角度)
{
//#地球无线电单位:KM
var R=6378.14;
//#弧度
var latitude1=lat1*(数学PI/180);
变量longitude1=long1*(数学PI/180);
brng=角度*(数学PI/180);
latitude2=Math.asin(Math.sin(latitude1)*Math.cos(d/R)+Math.cos(latitude1)*Math.sin(d/R)*Math.cos(brng));
longitude2=longitude1+Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(latitude1),Math.cos(d/R)-Math.sin(latitude1)*Math.sin(latitude2));
//#回到零度
latitude2=latitude2*(180/Math.PI);
longitude2=longitude2*(180/数学π);
//#传单和其他系统兼容性的小数点为6
lat2=纬度2;
long2=longitude2;
var-tab={};
//按入阵列并返回
tab[0]=lat2;
表[1]=long2;
返回选项卡;
}
获取gps距离('38.898556','-77.037852',.549,90);

您是否在询问如何根据端点的纬度/长坐标计算球体表面上“直线”的长度?您是否在使用适当的数学公式或JavaScript部分时遇到问题?到目前为止,您编写了哪些代码?你被卡在哪一部分?请在问题中添加一个代码片段,以显示问题所在。函数距离(lat1,lon1,lat2,lon2){var radius=6371e3;//meters var dLon=gis.toRad(lon2-lon1),lat1=gis.toRad(lat1),lat2=gis.toRad(lat2),distance=Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(dLon))*半径;返回距离;}以上javascript函数用于计算距离,函数(lat,long,distance){请将您的问题添加到这些详细信息中,不要在评论中发布代码块。这是为了回答您的问题,还是为了澄清您的问题?如果是后者,请编辑您的问题并在那里添加详细信息,然后删除此答案。关于您在评论中的“我可以计算”评论(否则)空函数,如果您想要另一个lat/long作为函数输出,则需要指定方向和距离。您是否在第二个函数中假装计算新的lat-long坐标,仅给出lat-long中心和距离?如果是这种情况,您需要知道两点之间的方位角。根据上述示例我想用给定的lat_中心,lon_中心和距离计算lat,lon,你需要方向,因为从给定的点到该距离可能有很多lat长。是的,你是正确的。我可以得到4个方向的4 lat lng吗???@roconmachine我已经根据你的需要编辑了我的答案。如果需要,请告诉我works@roconmachine请接受如果答案是你需要的,那么它可以帮助别人。