2013-05-16 145 views
1

我一直在嘗試一些教程和基本練習與谷歌地圖V2和我堅持發生的事情發生在我的「setOnMyLocationChangeListener」方法。該方法的麻煩:setOnMyLocationChangeListener

我運行下面的代碼:

this.mMap.setOnMyLocationChangeListener(new OnMyLocationChangeListener() { 

    @Override 
    public void onMyLocationChange(Location location) { 
     int lat = (int) (location.getLatitude() * 1E6); 
     int lon = (int) (location.getLongitude() * 1E6); 

     Toast.makeText(
       GoogleMapsV2_Interact.this, 
       "Coordss\n" + "Lat: " + lat + "\n" + "Lon: " + lon + "\n" , 
       Toast.LENGTH_SHORT).show(); 
     Log.d(TAG, "Event OnMyLocationChangeListener."); 
    } 
}); 

如果我理解正確這整個事件被認爲只有當改變「在地圖上顯示我的位置藍點」中的位置觸發...但是每次我在我的設備上運行代碼時,我都會不斷地爲我的代碼吐司,比如事件被不間斷地觸發。

有什麼我失蹤,或者我不理解?我以爲我只能看到我的敬酒,只有在藍點的位置發生變化之後。

+0

我也遇到過這種情況,並切換回普通的舊的LocationListener,效果更好。 –

+0

我工作過你的建議,結果確實好多了。謝謝! – Eversor

回答

1

的文檔指出

Called when the Location of the My Location dot has changed (be it latitude/longitude, bearing or accuracy).

也許你的軸承或精度時刻都在變化 - 與座標把它們打印成logcat的,看看什麼是從以前的日誌報表不同。

+0

你是對的!謝謝你的想法。這些變化非常小,但仍然存在。 – Eversor

+0

@Eversor我正面臨類似的問題,並想知道,你是如何設法防止這些小的變化形式發生? –

+0

您可以通過使用'android.location.LocationManager.requestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener)'並注入'minDistance'參數來註冊最小距離變化 – Axarydax