我正在嘗試製作一個應用程序,指向您的位置。你按一個按鈕,它存儲GPS座標,然後計算距離和角度你需要面對的東西。然後,通過使用屏幕上的指南針圖形「指向」該位置,它將引導您回到該記住的位置。Android,使用gps和指南針指向座標
至少,它應該是。在編寫了幾個小時的代碼之後,我得出結論,由於我在過去幾年中缺乏觸發實踐,所以在某處存在邏輯錯誤。
指南針和GPS位置相當頻繁地更新。這是我的主要更新調用中的代碼,用於旋轉指南針並顯示距離的用戶界面。
public void updateUI(){
double deltaX = targetLongitude - currentLongitude;
double deltaY = targetLatitude - currentLatitude;
double distance = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
double rotation = Math.toDegrees(Math.atan2(deltaX,deltaY));
distanceTextView.setText(Double.toString(distance));
rotateCompass(rotation - degreesClockwiseFromNorth);
}
和rotateCompass代碼:
public void rotateCompass(double degrees){
degrees -= currentRotation; //calculates necessary rotation across updates
currentRotation += degrees;
matrix.postRotate(
(float) degrees,
compass.getDrawable().getBounds().width()/2,
compass.getDrawable().getBounds().height()/2);
compass.setImageMatrix(matrix);
}
我幾乎可以肯定我的旋轉代碼工作,因爲當我更換
rotateCompass(rotation - degreesClockwiseFromNorth);
與
rotateCompass(0 - degreesClockwiseFromNorth);
它指向北方右邊還有一個真正的指南針r不管我面對的方向如何。但是當我使用前者時,它指向了一致點,但是這一點似乎遠不及目標點。 所以我得出結論,我的錯誤是要麼計算正確的角度,要麼期待gps太精確。我還沒有在我的後院進行遠距離測試,但我認爲如果這是一個GPS準確度問題,我會看到我的指南針在各處跳躍,而不是堅定地指向錯誤的方向。
感謝您的閱讀,任何建議或更正將不勝感激。
哇,你是認真的嗎?我甚至沒有考慮過像這樣的事情。在做這件事之前,我應該多做一點研究(或者更加邏輯地考慮一下)。我會試試看。 – user2816570
再次查看Location對象,我看到distanceBetween函數也會返回方位。這應該解決你所有的計算問題。 –
你說得對。我覺得這樣的失敗者不會先閱讀文檔。哈哈,再次感謝。 – user2816570