2013-06-03 75 views
0

當我旋轉地圖時,指南針出現。然而,我的一個按鈕與指南針重疊...我想知道是否有辦法檢測它,以便在指南針顯示時隱藏我的按鈕。提前致謝!關於指南針show listener存在嗎? (谷歌地圖Android API V2)

編輯: 我的問題早些時候誤導了對不起,我實際上希望按鈕在用戶實際旋轉/傾斜地圖時消失,並且一旦用戶的手離開屏幕,它就會重新出現。

@使用CameraPosition.bearing != 0 || CameraPosition.tilt != 0的MaciejGórski的建議是一大步,我嘗試了以下實現,但後來我意識到,OnCameraChangeListener並不立即啓用的用戶開始旋轉/傾斜地圖,所以不會按預期工作。

public OnCameraChangeListener getCameraChangeListener() { 
    return new OnCameraChangeListener() { 
     @Override 
     public void onCameraChange(CameraPosition position) { 


      // when compass show hide option button 
      if (optionButton.getVisibility() == LinearLayout.VISIBLE 
        && (position.bearing != 0 || position.tilt != 0)) { 
       optionButton.setVisibility(LinearLayout.GONE); 

       final Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
       //wait 1 sec and show the button again 
          optionButton.setVisibility(LinearLayout.VISIBLE); 
        } 
       }, 1000); 
      } 

     } 
    }; 
} 

回答

0

我不認爲這個選項存在,你將與你的搬遷按鈕或刪除這一行地圖的指南針小部件更好:

myMap.getUiSettings().setCompassEnabled(false); 
1

你可以很容易地檢測時,羅盤顯示通過在OnCameraChangeListener中檢查CameraPosition.bearing != 0 || CameraPosition.tilt != 0

+0

謝謝,這是非常有幫助的,但我的問題有點複雜。請參閱更新.. – Arch1tect

+0

@ Arch1tect如何嘗試使用輪詢?在onResume中發送消息給Handler,處理完成後發送延遲消息。在handleMessage內部使用map.getCameraPosition()。不要忘記在onPause中刪除消息以避免內存泄漏。 –

+0

我不太關注這裏,爲什麼它與onResume有關......還有,onCameraChangeListerner的問題不夠響應? http://stackoverflow.com/questions/14235686/oncamerachangelistener-is-not-responsive-enough-is-there-another-way – Arch1tect