私はgisの新しいです。 JavaScriptで作業しています。距離とは別の場所を計算する方法
センターラングロンがあるとします。別のポイントは中心から遠いn mitersのターゲット(latlong)です。中心からのこの位置差(中心 - 緯度)とマイターのnを計算する方法。
みんな私を助けてください。
地球が適切に球形であると見なすことができます。 javascript関数上記
私はgisの新しいです。 JavaScriptで作業しています。距離とは別の場所を計算する方法
センターラングロンがあるとします。別のポイントは中心から遠いn mitersのターゲット(latlong)です。中心からのこの位置差(中心 - 緯度)とマイターのnを計算する方法。
みんな私を助けてください。
地球が適切に球形であると見なすことができます。 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;
}
距離を算出するものである、ここで
function(lat, long, distance){
//can i calculate lat_difference, long difference
}
これはあなたの質問に答えるか、あなたが何を求めているかを明確にすることになっていますか?後者の場合は、質問を編集して詳細を追加してから、この回答を削除してください。 function(出力)として別の緯度/経度が必要な場合は、*方向*と距離を指定する必要があります。 – nnnnnn
2番目の関数で新しい緯度経度を計算して、緯度の長い中心と距離のみを計算していますか?その場合、2点間の方位角を知る必要があります。 –
は、あなたのコードは次のとおりです。 -
<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>
上記の例によると、指定されたlat_center、lon_center、distanceでlat、lonを計算したいのですが、 – roconmachine
の方が向いています。 –
あなたは正しいです。私は4つの方向のために4ラットのlngを得ることができますか? – roconmachine
あなたは上の「ストレート」ラインの長さを計算する方法を求めています終点の緯度/経度座標に基づいて球の表面?適切な数式またはJavaScript部分だけで問題がありますか? – nnnnnn
あなたはこれまでどんなコードを書いていますか?どちらの部分についていくのですか?問題が発生している場所を示す質問にコードスニペットを追加してください。 –
関数距離(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