- Forum-Beiträge: 5
29.11.2017, 12:00:37 via Website
29.11.2017 12:00:37 via Website
Hi,
ich erzeuge in meiner App eine Heatmap mit über 50.000 Koordinaten. Nach dem Start braucht die APP ca. 10 Sekunde bis alle Daten geladen sind und zeigt die Heatmap anschließend wie gewünscht an.
Über einen eigenen Thread für die Erstellung der Heatmap wollte ich nun erreichen, dass nach dem Start der APP die Google Map ohne Heatmap direkt angezeigt wird und erst nach Fertigstellung der Heatmap (nach ca. 10 Sekunden), auf die Map projiziert wird. Leider stürzt die APP genau an dieser Stelle ab, an der ich den HeatmapTileProvider mit der Methode addTileOverlay() an die Map übergebe.
Ich ändere an dem funktionierenden Code nichts, außer dass ich in die run() Methode des Threads die Erzeugung des HeatmapTileProvider() mit allen Koordinaten auslagere.
Unterbrochen wir die Ausführung an der Stelle mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider());
mit der Ausgabe AndroidRuntime: FATAL EXCEPTION: Thread-10
und der Meldung com.google.android.gms.maps.GoogleMap.addTileOverlay(Unknown Source:2)
. Es sieht also alles danach aus als wäre die Ressource unbekannt. Da die APP jedoch ohne den Thread mit der Heatmap bestens funktioniert, liegt es wohl am Thread selbst. Aber ich kann leider nicht feststellen was daran falsch ist und bräuchte Eure Hilfe.
Anbei zur Verdeutlichung die entsprechenden Codezeilen:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
new Thread(new Runnable() {
@Override
public void run() {
mProvider = new HeatmapTileProvider
.Builder()
.weightedData(getData())
.build();
addHeatmap();
}
}).start();
}
private void addHeatmap() {
Log.d(TAG, "addHeatmap()");
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));
}
Für Eure Bemühungen vielen Dank!
Gruß
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.