首页 > 解决方案 > 使用 Handler 设置 Visibile/Invisibile 一个 maker

问题描述

我正在为一个项目使用谷歌地图。我正在使用处理程序将标记设置为可见或不可见。如果相机的变焦超过一个数字,我必须将标记设置为不可见,或者如果变焦低于一个数字,我必须将标记设置为不可见。我正在使用 ArrayList 来保存所有标记。

我需要创建一个计时器,该计时器将继续工作,直到应用程序关闭

我的问题是处理程序没有启动。下面是我的代码:

final Handler handler = new Handler();
Runnable run = new Runnable() {
    @Override
    public void run() {

        if (mMap.getCameraPosition().zoom > zoomLevel) {

            for (int j = 0; j < players.size(); j++) {
                Marker removeMarker = players.get(j).marker;
                removeMarker.setVisible(false);
            }
        }else {

            for (int j = 0; j < players.size(); j++) {
                Marker removeMarker = players.get(j).marker;
                removeMarker.setVisible(true);
            }
        }

        handler.postDelayed(run, 1000);
    }
};

标签: android

解决方案


handler.postDelayed(run, 1000);需要在可运行主体之外

final Handler handler = new Handler();
Runnable run = new Runnable() {
    @Override
    public void run() {

        if (mMap.getCameraPosition().zoom > zoomLevel) {

            for (int j = 0; j < players.size(); j++) {
                Marker removeMarker = players.get(j).marker;
                removeMarker.setVisible(false);
            }
        }else {

            for (int j = 0; j < players.size(); j++) {
                Marker removeMarker = players.get(j).marker;
                removeMarker.setVisible(true);
            }
        }
    }
};
handler.postDelayed(run, 1000);

推荐阅读