-1

重複の可能性:
toRad()javascript関数がエラーをスローする

だから最初に私はこれらの2つのpタグを手に入れました

<p id="pos"></p>
<p id="dist"></p>

私が自分の位置を「pos」に置き、私とニューヨークの間の距離を「dist」に置いたところ。JS機能をトリガーするために次の2つのボタンを取得しました。

<button onclick="getLocation()">Get position</button>
<button onclick="calcDistance()">Calculate distance to NY</button>

そして、ここにすべてのスクリプトがあります:

var x=document.getElementById("pos");
var d=document.getElementById("dist");
var startPos;
function getLocation(){
      navigator.geolocation.getCurrentPosition(function(position) {
        startPos = position;
        x.innerHTML= "<h3>Your position</h3>" +
        "Latitude: " + startPos.coords.latitude + 
        "<br>Longitude: " + startPos.coords.longitude;
      });
};
function calcDistance(){
    var distt = calculateDistance(startPos.coords.latitude, startPos.coords.longitude, 40.28371627, -73.994901);
    d.innerHTML = distt.toFixed(1);
};

function calculateDistance(lat1,lon1,lat2,lon2) {
    var R = 6371;
    var dLat = (lat2-lat1).toRad();
    var dLon = (lon2-lon1).toRad(); 
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
            Math.sin(dLon/2) * Math.sin(dLon/2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    return R * c;   
}

calcDistanceボタンが機能せず、問題が何であるかわかりません。数値をcalculateDistance()に入れようとしましたが、それでも機能しません。どうして?

4

1 に答える 1

2

これをJSの上に置きます:

Number.prototype.toRad = function() {
  return this * Math.PI / 180;
}

@apsillersが言ったように、.toRad()はネイティブ関数ではありません。今後の参考のために、エラーが何であるかを通知するWebコンソールを使用する必要があります。この場合、次のようになります。

Uncaught TypeError: Object -0.123871823 has no method 'toRad'

于 2012-11-26T17:16:07.650 に答える