2017-03-23 206 views
1

我是Android新手,我正在嘗試從多邊形中清除未在其中觀看的地圖。我決定在Thread中完成它。但是,當我嘗試調用contains方法它拋出一個exeption「java.lang.IllegalStateException:沒有主線程」谷歌地圖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。有沒有辦法做到這一點?我將不勝感激所有建議

回答

0

問題在於多邊形。我試圖從UI線程獲得多邊形的點

0

爲什麼你在一個單獨的線程中做這件事?只需在onCameraIdle監聽器中運行此代碼,就可以了。 (您不需要爲每個相機移動運行它。)

+0

我會盡力描述我的任務。我從out gps模塊接收座標。頻率從2到10赫茲。我必須使用SphericalUtils.computeOffset()來處理這個座標並獲得2個更多的平行座標。當我收到下一個,我也一樣。然後我必須通過處理的座標添加多邊形。事實證明,很多polygones和地圖stucks。我的決定是對可見的每個多邊形的地圖都設置爲可視性錯誤。服務提供給活動數據,另一個線程應該使多邊形不可見。我 – DanMan

+0

如果我的問題是在polygone.getPoints()中的問題。我不能從UI線程之外做到這一點 – DanMan