谷歌地图latLngBounds

时间:2017-03-23 13:26:18

标签: android multithreading google-maps

我是android的新手,我正在尝试从多边形中清除地图,而这些多边形在一个上面没有被查看。我决定在Thread中做这件事。但是当我尝试调用contains方法时,它会抛出一个exeption" java.lang.IllegalStateException:不在主线程上"

 Thread mThread = new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            while (true) {
                if (mPolygones == null || mPolygones.isEmpty())
                    continue;
                synchronized (mPolygones) {
                    for (int i = 0; i < mPolygones.size(); i++) {
                        Polygon polygon = mPolygones.get(i);
                        if (mLatLngBounds.contains(polygon.getPoints().get(0))) {
                            Intent intent = new Intent("polygon");
                            intent.putExtra("index", i);
                            mLocalBroadcastManager.sendBroadcast(intent);
                        }

                    }
                }
            }

        } catch (Exception ex) {
            ex.getMessage();
        }
    }
});

我在OnCameraMoveListener回调中从谷歌地图获得mLatLngBounds。有没有办法做到这一点?我会对所有建议表示赞赏

2 个答案:

答案 0 :(得分:0)

你为什么要在一个单独的线程中这样做呢?只需在onCameraIdle监听器中运行此代码,您就可以了。 (你不需要为每次相机运动都运行它。)

答案 1 :(得分:0)

麻烦在于多边形。我试图从UI线程中获取多边形点