2017-03-23 1 views
1

私はアンドロイドで新しく、私は1つでも見えないポリゴンから地図をきれいにしようとしています。私はスレッドでそれをすることにしました。 「:未メインスレッド上java.lang.IllegalStateException」GoogleマップlatLngBounds

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を取得し、私が呼び出すしようとすると、しかし、それはexeptionをスローするメソッドが含まれています。これを行う方法はありますか?すべてのアドバイスをいただければ幸いです。

答えて

0

問題は多角形であった。私はUIスレッドのポリゴンからポイントを取得しようとしました

0

どうして別のスレッドでこれをやっていますか? onCameraIdleリスナーでこのコードを実行するだけで問題ありません。 (カメラの動きごとに動かす必要はありません)

+0

私は自分の仕事を記述しようとします。私はgpsモジュールから座標を受け取ります。 2~10Hzの周波数。私はこの座標を処理し、SphericalUtils.computeOffset()を使って2つの平行な座標を取得する必要があります。私が次に受け取るとき、私は同じことをする。そして、処理された座標にポリゴンを追加する必要があります。それはたくさんのポリゴンとマップスタックを引き起こします。私の決定は、マップから見える部分から残る各ポリゴンについて、無効をfalseに設定しています。サービスは活動データに与え、別のスレッドはポリゴンを不可視にする必要があります。私 – DanMan

+0

私の質問の場合、trubleはpolygone.getPoints()にありました。私は外部のUIスレッドからそれを行うことはできません – DanMan