@Override public void run() { if (current != null) { // since we want to keep the green bitmap around, we have to increment // its ref count, otherwise it gets recycled automatically when it is // replaced with the other colour. current.incrementRefCount(); } if (bitmapGreen.equals(current)) { marker.setBitmap(bitmapRed); current = bitmapRed; } else { marker.setBitmap(bitmapGreen); current = bitmapGreen; } redrawLayers(); handler.postDelayed(this, 2000); } }
@Test public void drawTest() { for (int tileSize : TILE_SIZES) { Marker marker = new Marker(null, null, 0, 0); marker.setDisplayModel(new FixedTileSizeDisplayModel(tileSize)); BoundingBox boundingBox = new BoundingBox(-1, -1, 1, 1); Canvas canvas = GRAPHIC_FACTORY.createCanvas(); canvas.setBitmap(GRAPHIC_FACTORY.createBitmap(tileSize, tileSize)); Point point = new Point(0, 0); marker.draw(boundingBox, (byte) 0, canvas, point); marker.setLatLong(new LatLong(0, 0)); marker.draw(boundingBox, (byte) 0, canvas, point); marker.setBitmap(GRAPHIC_FACTORY.createBitmap(10, 20)); marker.draw(boundingBox, (byte) 0, canvas, point); } }
@Override public final void onHeatmapCompleted(final Bitmap backbuffer) { // zoom level has changed in the mean time - regenerate if (mMapView.getModel().mapViewPosition.getZoomLevel() != zoomAtTrigger) { updatePending = false; Log.i(TAG, "Zoom level has changed - have to re-generate heat-map"); clearLayer(); proceedAfterHeatmapCompleted(); return; } final BitmapDrawable drawable = new BitmapDrawable(backbuffer); final org.mapsforge.core.graphics.Bitmap mfBitmap = AndroidGraphicFactory.convertToBitmap(drawable); if (heatmapLayer != null && mfBitmap != null) { heatmapLayer.setBitmap(mfBitmap); } else { Log.w(TAG, "Skipped heatmap draw: either layer or bitmap is null"); } updatePending = false; //saveHeatmapToFile(backbuffer); }
@Override public final void onHeatmapCompleted(final Bitmap backbuffer) { // zoom level has changed in the mean time - regenerate if (mMapView.getModel().mapViewPosition.getZoomLevel() != mZoomAtTrigger) { mUpdatePending = false; Log.i(TAG, "Zoom level has changed - have to re-generate heat-map"); clearLayer(); proceedAfterHeatmapCompleted(); return; } final BitmapDrawable drawable = new BitmapDrawable(backbuffer); final org.mapsforge.core.graphics.Bitmap mfBitmap = AndroidGraphicFactory.convertToBitmap(drawable); if (mHeatmapLayer != null && mfBitmap != null) { mHeatmapLayer.setBitmap(mfBitmap); } else { Log.w(TAG, "Skipped heatmap draw: either layer or bitmap is null"); } mUpdatePending = false; //saveHeatmapToFile(backbuffer); } /**
@Test public void setterTest() { LatLong latLong = new LatLong(0, 0); Bitmap bitmap = GRAPHIC_FACTORY.createBitmap(10, 20); Marker marker = new Marker(null, null, 0, 0); Assert.assertNull(marker.getLatLong()); Assert.assertNull(marker.getBitmap()); Assert.assertEquals(0, marker.getHorizontalOffset()); Assert.assertEquals(0, marker.getVerticalOffset()); marker.setLatLong(latLong); Assert.assertEquals(latLong, marker.getLatLong()); marker.setBitmap(bitmap); Assert.assertEquals(bitmap, marker.getBitmap()); marker.setHorizontalOffset(-1); Assert.assertEquals(-1, marker.getHorizontalOffset()); marker.setVerticalOffset(-2); Assert.assertEquals(-2, marker.getVerticalOffset()); } }