2016-05-16 27 views
0

如何更改後臺線程中的相機焦點? 縮放在線程中正常工作,但不改變座標。 如果線程中沒有使用,還需要更改座標,但我打算使用延遲,因此它需要在那裏。GoogleMap.animateCamera無法在後臺線程中工作

@Override 
     public void run() { 

      if (points.size() > 0){ 
       Polyline line = map.addPolyline(new PolylineOptions() 
         .addAll(points) 
         .width(5) 
         .color(Color.RED)); 
       System.out.println(points.get(0).toString()); 
       map.animateCamera(CameraUpdateFactory.newLatLng(points.get(0))); 
       map.animateCamera(CameraUpdateFactory.zoomTo(14)); 
      } 
     } 

回答

2

可能是因爲你可能不會在主UI線程來運行這個

變化

map.animateCamera(CameraUpdateFactory.newLatLng(points.get(0))); 
map.animateCamera(CameraUpdateFactory.zoomTo(14)); 

runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
          map.animateCamera(CameraUpdateFactory.newLatLng(points.get(0))); 
          map.animateCamera(CameraUpdateFactory.zoomTo(14)); 
        } 
        }); 
+0

忘記提及我使用延遲,所以我不能在UI線程中運行 –

+0

使用延遲不會停止使用runOnUIThread!如果您必須從其他線程更新任何UI,則需要使用此方法/處理程序或其他技術 – Stallion

0

AnimateCamera API在另一個線程中執行已經爲您。所以你必須在UI線程中調用它。 Details about API