GoogleMap.animateCamera无法在后台线程

时间:2016-05-16 11:06:42

标签: android multithreading google-maps

如何在后台线程中更改相机焦点? 缩放在线程中工作正常,但更改坐标不是。 如果线程中没有使用坐标也会改变坐标,但我打算使用延迟,所以它需要在那里。

@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 个答案:

答案 0 :(得分: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));
                     }
                    });

答案 1 :(得分:0)

AnimateCamera API已在另一个线程中实现。所以你必须在UI线程中调用它。 Details about API