首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算与距离不同的位置

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

Stack Overflow用户
提问于 2016-06-23 15:15:13
回答 2查看 415关注 0票数 2

我是gis的新手。我在JavaScript工作。

假设有中心latlong。另一个点是远离中心的n斜接的目标(Latlong)。如何计算与斜接中的中心和n的位置差( center - latlong)。

伙计们请帮帮我。

让我们考虑一下地球是真正的球体。

EN

回答 2

Stack Overflow用户

发布于 2016-06-23 15:33:01

代码语言:javascript
复制
  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;
  }

上面的javascript函数用于计算距离,

代码语言:javascript
复制
function(lat, long, distance){
  //can i calculate lat_difference, long difference
}
票数 1
EN

Stack Overflow用户

发布于 2016-06-23 15:45:25

这是你的代码:

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37984670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档