我正在嘗試查找鼠標點擊和最近的一組廣告牌之間的距離。我的代碼如下: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.
根據銫的文檔,它應該返回一個數字。我可以發誓我在過去的項目中做了類似的事情,並沒有這個問題。我有強烈的懷疑,我失蹤和/或忘記了一些非常基本的東西。任何人都可以建議嗎?
編輯: 我做了一些進一步調試,我發現peakPosition.x和peakPosition.y都是未定義的,其中peakPosition =峯[I] .POSITION。峯[i]仍然呈現爲地球上的廣告牌,並且peakPosition是一個對象。根據Cesium文檔,它應該是Cartesian3類型的對象,它應該有x和y成員。那麼爲什麼這些成員是不確定的?
編輯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
@謝謝,我補充說,在我開始遇到問題作爲一個錯字(我已經離開mousePosition = new Cesium.Cartesian3(ev.clientX,ev.clientY,0.0); line當我將它添加到距離線上時,我最初得到了NaN作爲結果,現在我已經修復了它,我再次得到了NaN,但我確實錯過了一些非常基本的東西,但是不幸的是,它並沒有導致正確的結果 –