私はマウスパッドと一番近い看板セットの間の距離を見つけようとしています。次のように私のコードは次のとおりです。Cartesian3.distance - NaNを返しますか?
var smallestDistance = -1;
var currentDistance = -1;
var nearestPeak;
var peakPosition;
var mousePosition = new Cesium.Cartesian3(ev.clientX, ev.clientY, 0.0);
for (var i = 0; i < peaks.length; i++) {
peakPosition = peaks[i].position;
currentDistance = Cesium.Cartesian3.distance(mousePosition, peakPosition);
console.log('CESIUM: Distance to ' + peaks[i].name + ': ' + currentDistance + ' units.');
if (currentDistance < smallestDistance) {
smallestDistance = currentDistance;
nearestPeak = displayedPeaks[i];
}
}
console.log('CESIUM: nearest peak is peak ' + nearestPeak.peakId);
if (smallestDistance != -1 && smallestDistance < 100000) {
selectedPeak = nearestPeak;
}
問題は、それが最初に表示されるにconsole.log文に表示されます:セシウムのマニュアルによると
CESIUM: Distance to peak 1: NaN units.
が、それは数を返すべきです。私は過去のプロジェクトで同様のことをやったことを誓うことができ、この問題はなかった。私は、非常に基本的なことを忘れている、あるいは忘れているという強い疑いを持っています。誰も助言することはできますか?
EDIT: 私はさらにいくつかのデバッグをした、と私はpeakPosition.xとpeakPosition.yの両方が未定義であることを、ピーク位置=ピーク[I] .positionを見つけています。 peaks [i]はまだ地球上のビルボードとしてレンダリングされており、peakPositionはオブジェクトです。セシウムの文書によると、xとyのメンバーを持つべきCartesian3型のオブジェクトであるべきです(SHOULD)。だからなぜそれらのメンバーは未定義ですか?
EDIT 2:これに
peakPosition = peaks[i].position;
: 私はこの行を置き換える試み
peakPosition = new Cesium.Cartesian3(this.peaks[i].position.x, this.peaks[i].position.y, 0.0);
とそのx、y及びzのメンバーであり、常に0、0、0私の人生のためにこれを理解することはできません。
へ
そのドキュメントで簡単に見から、 'distance'は静的メソッドです。だから距離を得るための呼び出しの前に「新しい」と言えるだろうか? – CRice
新しいキーワードはオブジェクトの作成に使用されます。削除してください。 – Amy
@CRice - ありがとう、私は、私がtypoとして問題に遭遇した後でそれを追加しました(私はmousePosition = new Cesium.Cartesian3(ev.clientX、ev.clientY、0.0);私がそこに追加したときに私は距離線にも追加しました。最初はNaNを結果として取得しましたが、今度はNaNをもう一度得て固定しました。 –