2017-03-23 2 views
1

Ich bin neu in Android, ich versuche eine Karte aus Polygonen sauber zu machen, die nicht auf einer gesehen werden. Ich habe beschlossen, es in Thread zu tun. Aber wenn ich versuche, enthält anrufen Methode es eine Ausnahme wirft „java.lang.IllegalStateException: Nicht auf dem Haupt-Thread“Google map 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(); 
     } 
    } 
}); 

ich mLatLngBounds von google map in OnCameraMoveListener Rückruf. Gibt es eine Möglichkeit, dies zu tun? Ich werde für alle Beratung geschätzt werden

Antwort

0

Das Problem war im Polygon. Ich habe versucht, Punkte aus dem Polygon aus dem UI-Thread

0

Warum machst du das in einem separaten Thread überhaupt? Führen Sie diesen Code einfach im onCameraIdle-Listener aus, und alles wird gut. (Sie müssen es nicht für jede Kamerabewegung ausführen.)

+0

zu bekommen Ich werde versuchen, meine Aufgabe zu beschreiben. Ich erhalte die Koordinaten von out GPS-Modul. Frequenz von 2 bis 10 Hz. Ich muss diese Koordinate verarbeiten und mit SphericalUtils.computeOffset() zu zwei weiteren parallelen Koordinaten kommen. Wenn ich das nächste bekomme, mache ich dasselbe. Und dann muss ich Polygon durch verarbeitete Koordinaten hinzufügen. Es stellt sich heraus, viel Polygone und Karten stecken. Meine Entscheidung ist visobility falsch für jedes Polygon gesetzt, das vom Sichtbaren von einer Karte geht. Der Dienst gibt Aktivitätsdaten und ein anderer Thread sollte Polygone unsichtbar machen. I – DanMan

+0

Im Falle meiner Frage war truble in polygone.getPoints(). Ich kann das nicht von einem externen UI-Thread aus tun – DanMan