使用 TimerTask 在谷歌地图中设置地图

Posted

技术标签:

【中文标题】使用 TimerTask 在谷歌地图中设置地图【英文标题】:set map in google maps with TimerTask 【发布时间】:2013-08-04 01:53:08 【问题描述】:

我想在谷歌地图 v2 中更改地图的位置

但我已经在 TimerTask 中完成了...目标、缩放、方位等等,它说

"IllegalStateException - 不在主线程上

我该怎么办?有什么帮助吗?

class Task extends TimerTask  

    @Override 
    public void run() 
        CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(Zt)      // Sets the center of the map to Mountain View
                .zoom(12)                   // Sets the zoom
                .bearing(180)                // Sets the orientation of the camera to east
                .tilt(30)                   // Sets the tilt of the camera to 30 degrees
                .build();                   // Creates a CameraPosition from the builder

        mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    


Timer timer = new Timer();

timer.scheduleAtFixedRate(new Task(), 0, 20000);

【问题讨论】:

您无法在主/ui 线程之外更新用户界面。这可能会有所帮助:***.com/questions/7010951/… 非常感谢 - 它有效 :) 【参考方案1】:

计时器任务在与 UI 线程不同的线程上运行。在 android 中,不允许从非 UI 线程执行 UI 操作。使用runOnUiThread方法向UI线程发送操作:

class Task extends TimerTask  

    @Override 
    public void run() 
        runOnUiThread(new Runnable() 
            @Override 
            public void run() 
                CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(Zt)      // Sets the center of the map to Mountain View
                        .zoom(12)                   // Sets the zoom
                        .bearing(180)                // Sets the orientation of the camera to east
                        .tilt(30)                   // Sets the tilt of the camera to 30 degrees
                        .build();                   // Creates a CameraPosition from the builder

                mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
            
        );
    


Timer timer = new Timer();

timer.scheduleAtFixedRate(new Task(), 0, 20000);

【讨论】:

以上是关于使用 TimerTask 在谷歌地图中设置地图的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌地图中设置多个航点?

如何在谷歌地图中将文本设置为标记

无法在谷歌地图android上动态设置多个标记

无法单击标记 - 谷歌地图集群Android,无法在谷歌地图中显示信息窗口

如何在谷歌地图的集群中为标记设置我自己的图标

在谷歌地图颤动中设置标记