refactoring3

This commit is contained in:
simon 2020-09-04 18:48:01 +03:00
parent fef6f93621
commit a7633b2031

View file

@ -1,6 +1,7 @@
package net.osmand.plus.server.endpoints; package net.osmand.plus.server.endpoints;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.util.Log;
import fi.iki.elonen.NanoHTTPD; import fi.iki.elonen.NanoHTTPD;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.data.RotatedTileBox; import net.osmand.data.RotatedTileBox;
@ -9,7 +10,6 @@ import net.osmand.plus.render.MapRenderRepositories;
import net.osmand.plus.resources.AsyncLoadingThread; import net.osmand.plus.resources.AsyncLoadingThread;
import net.osmand.plus.server.ApiEndpoint; import net.osmand.plus.server.ApiEndpoint;
import net.osmand.plus.server.OsmAndHttpServer; import net.osmand.plus.server.OsmAndHttpServer;
import org.apache.commons.logging.Log;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
@ -23,6 +23,7 @@ import static fi.iki.elonen.NanoHTTPD.newFixedLengthResponse;
public class TileEndpoint implements ApiEndpoint { public class TileEndpoint implements ApiEndpoint {
private static final int RENDER_WAIT_THRESHOLD = 5000; private static final int RENDER_WAIT_THRESHOLD = 5000;
private static final Object lock = new Object(); private static final Object lock = new Object();
private static final int TILE_SIZE_PX = 512;
Map<RotatedTileBox, Bitmap> hashMap = new HashMap<>(); Map<RotatedTileBox, Bitmap> hashMap = new HashMap<>();
Map<RotatedTileBox, Bitmap> map = Collections.synchronizedMap(hashMap); Map<RotatedTileBox, Bitmap> map = Collections.synchronizedMap(hashMap);
OsmandApplication application; OsmandApplication application;
@ -46,6 +47,7 @@ public class TileEndpoint implements ApiEndpoint {
if (bitmap == null) { if (bitmap == null) {
return OsmAndHttpServer.ErrorResponses.response500; return OsmAndHttpServer.ErrorResponses.response500;
} }
//stream also needs to be synchronized
ByteArrayOutputStream stream = new ByteArrayOutputStream(); ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray(); byte[] byteArray = stream.toByteArray();
@ -67,7 +69,7 @@ public class TileEndpoint implements ApiEndpoint {
final RotatedTileBox rotatedTileBox = new RotatedTileBox.RotatedTileBoxBuilder() final RotatedTileBox rotatedTileBox = new RotatedTileBox.RotatedTileBoxBuilder()
.setLocation(lat, lon) .setLocation(lat, lon)
.setZoom(zoom) .setZoom(zoom)
.setPixelDimensions(512, 512, 0.5f, 0.5f).build(); .setPixelDimensions(TILE_SIZE_PX, TILE_SIZE_PX, 0.5f, 0.5f).build();
final MapRenderRepositories renderer = application.getResourceManager().getRenderer(); final MapRenderRepositories renderer = application.getResourceManager().getRenderer();
application.getResourceManager().updateRendererMap(rotatedTileBox, new AsyncLoadingThread.OnMapLoadedListener() { application.getResourceManager().updateRendererMap(rotatedTileBox, new AsyncLoadingThread.OnMapLoadedListener() {
@Override @Override