2016-05-16 2 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

Вероятно потому, что вы не можете работать это в основном потоке пользовательского интерфейса

Изменение

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

Забыл упомянуть Im, используя задержки, поэтому я не могу запустить в потоке Ui –

+0

Использование задержек не прекращает использование runOnUIThread! Если вам нужно обновить любой пользовательский интерфейс из других потоков, вам нужно использовать этот метод/обработчики или другую технику – Stallion

0

AnimateCamera API реализован в другом потоке уже для вас , Поэтому вы должны назвать это в потоке пользовательского интерфейса. Details about API

Смежные вопросы