2016-06-23 8 views
2

私はgisの新しいです。 JavaScriptで作業しています。距離とは別の場所を計算する方法

センターラングロンがあるとします。別のポイントは中心から遠いn mitersのターゲット(latlong)です。中心からのこの位置差(中心 - 緯度)とマイターのnを計算する方法。

みんな私を助けてください。

地球が適切に球形であると見なすことができます。 javascript関数上記

+0

あなたは上の「ストレート」ラインの長さを計算する方法を求めています終点の緯度/経度座標に基づいて球の表面?適切な数式またはJavaScript部分だけで問題がありますか? – nnnnnn

+0

あなたはこれまでどんなコードを書いていますか?どちらの部分についていくのですか?問題が発生している場所を示す質問にコードスニペットを追加してください。 –

+0

関数距離(lat1、lon1、lat2、lon2){ var radius = 6371e3; // meters var dLon = gis.toRad(lon2 - lon1)、 lat1 = gis.toRad(lat1)、 lat2 = gis.toRad(lat2)、 distance = Math.in(lat1)* MATH.cos(lat2)* Math.cos(lat2)* Math.cos(lat2)* Math.cos(lat2)* Math.cos 戻り距離; }上記のjavascript関数はdistance、function(lat、long、distance)を計算するためのものです{ – roconmachine

答えて

1
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 
} 
+1

これはあなたの質問に答えるか、あなたが何を求めているかを明確にすることになっていますか?後者の場合は、質問を編集して詳細を追加してから、この回答を削除してください。 function(出力)として別の緯度/経度が必要な場合は、*方向*と距離を指定する必要があります。 – nnnnnn

+0

2番目の関数で新しい緯度経度を計算して、緯度の長い中心と距離のみを計算していますか?その場合、2点間の方位角を知る必要があります。 –

1

は、あなたのコードは次のとおりです。 -

<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> 
+0

上記の例によると、指定されたlat_center、lon_center、distanceでlat、lonを計算したいのですが、 – roconmachine

+0

の方が向いています。 –

+0

あなたは正しいです。私は4つの方向のために4ラットのlngを得ることができますか? – roconmachine

関連する問題