2016-07-14 37 views
5

我想編程我的應用程序,以便我的ImageView的箭頭將指向給定的android.Location。現在它並沒有指向正確的方向。由於某種原因,它很漂亮。我認爲這是因爲我沒有考慮到我正確面對的方向。旋轉ImageView以面對給定位置的經緯度

下面是我在做什麼目前:

float angle = GetAngle(myLocation); 
RotateAnimation anim = new RotateAnimation(0.0f, angle, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
anim.setInterpolator(new LinearInterpolator()); 
anim.setRepeatCount(0); 
anim.setDuration(2); 
anim.setFillAfter(true); 
arrow.startAnimation(anim); 

這裏是GetAngle()函數:

float GetAngle(Location myLocation) 
{ 
    float angle = (float) Math.toDegrees(Math.atan2(theirLocation.getLatitude() - myLocation.getLatitude(), theirLocation.getLongitude() - myLocation.getLongitude())); 
    if (angle < 0) 
     angle += 360; 
    return angle; 
} 

是否有更好的方法來做到這一點比我怎麼了?我不知道如何讓ImageView面向我從一個位置給出的座標。

+1

讀http://stackoverflow.com/questions/4308262/calculate-compass-bearing-heading-to-location-in-android。這是你正在尋找的答案。 –

回答

1

首先,我不確定爲什麼你想要一個圖像視圖旋轉到一個角度。但是如果你認爲你可以用一個標記替換imageview,那就這樣做。

有很多的使用在這種情況下

  1. 易於標記來獲得優勢,並設置旋轉

  2. 你的旋轉將是非常流暢

其次,使用此功能獲取角度

toAngle = startingLocation.bea ringTo(endingLocation);

+0

標記不是顯示精確位置嗎?我想要一個箭頭指向某個方向。 – saboehnke

+0

將標記的圖標設置爲您想要的任何圖像。在這種情況下,你的'箭頭'。標記在方向和旋轉方面比任何視圖都有很多優勢 –

+0

我需要使用谷歌地圖嗎?因爲我不是。我只是從android.Location獲取緯度和經度。 – saboehnke

0

首先更新您的代碼而不動畫。我有同樣的問題,所以動畫可能會重新啓動或停止不同的行爲。

float angle = GetAngle(myLocation); 
myView.setRotation(angle); 
//Or also check 
myView.setRotationX(angle); 
myView.setRotationY(angle); 
+0

這不是修復,但我很欣賞setRotation()函數,而不是使用動畫,所以謝謝。 – saboehnke

+0

@saboehnke我的自定義listview - LinkedListView在github中遇到同樣的問題。我想每個滾動動畫視圖並開始動畫,但這是我的雙生問題。所以我解決了與任何行動轉換的問題。 – GensaGames

相關問題