commit
7c81f72439
4 changed files with 106 additions and 65 deletions
|
@ -509,26 +509,27 @@ public class SQLiteTileSource implements ITileSource {
|
||||||
if(db == null || coordinatesZoom > 25 ){
|
if(db == null || coordinatesZoom > 25 ){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
SQLiteCursor q ;
|
SQLiteCursor cursor ;
|
||||||
if (inversiveZoom) {
|
if (inversiveZoom) {
|
||||||
int minZoom = (17 - minZ) + 1;
|
int minZoom = (17 - minZ) + 1;
|
||||||
// 17 - z = zoom, x << (25 - zoom) = 25th x tile = 8 + z,
|
// 17 - z = zoom, x << (25 - zoom) = 25th x tile = 8 + z,
|
||||||
q = db.rawQuery("SELECT max(x << (8+z)), min(x << (8+z)), max(y << (8+z)), min(y << (8+z))" +
|
cursor = db.rawQuery("SELECT max(x << (8+z)), min(x << (8+z)), max(y << (8+z)), min(y << (8+z))" +
|
||||||
" from tiles where z < "
|
" from tiles where z < "
|
||||||
+ minZoom, new String[0]);
|
+ minZoom, new String[0]);
|
||||||
} else {
|
} else {
|
||||||
q = db.rawQuery("SELECT max(x << (25-z)), min(x << (25-z)), max(y << (25-z)), min(y << (25-z))"
|
cursor = db.rawQuery("SELECT max(x << (25-z)), min(x << (25-z)), max(y << (25-z)), min(y << (25-z))"
|
||||||
+ " from tiles where z > " + minZ,
|
+ " from tiles where z > " + minZ,
|
||||||
new String[0]);
|
new String[0]);
|
||||||
}
|
}
|
||||||
q.moveToFirst();
|
cursor.moveToFirst();
|
||||||
int right = (int) (q.getInt(0) >> (25 - coordinatesZoom));
|
int right = (int) (cursor.getInt(0) >> (25 - coordinatesZoom));
|
||||||
int left = (int) (q.getInt(1) >> (25 - coordinatesZoom));
|
int left = (int) (cursor.getInt(1) >> (25 - coordinatesZoom));
|
||||||
int top = (int) (q.getInt(3) >> (25 - coordinatesZoom));
|
int top = (int) (cursor.getInt(3) >> (25 - coordinatesZoom));
|
||||||
int bottom = (int) (q.getInt(2) >> (25 - coordinatesZoom));
|
int bottom = (int) (cursor.getInt(2) >> (25 - coordinatesZoom));
|
||||||
|
|
||||||
|
cursor.close();
|
||||||
|
|
||||||
return new QuadRect(left, top, right, bottom);
|
return new QuadRect(left, top, right, bottom);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteImage(int x, int y, int zoom) {
|
public void deleteImage(int x, int y, int zoom) {
|
||||||
|
|
|
@ -44,17 +44,15 @@ import net.osmand.IProgress;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
|
import net.osmand.StateChangedListener;
|
||||||
import net.osmand.data.DataTileManager;
|
import net.osmand.data.DataTileManager;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
|
||||||
import net.osmand.plus.ContextMenuAdapter;
|
import net.osmand.plus.ContextMenuAdapter;
|
||||||
import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
|
import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
|
||||||
import net.osmand.plus.ContextMenuItem;
|
import net.osmand.plus.ContextMenuItem;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference;
|
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings.OsmandPreference;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.UiUtilities;
|
import net.osmand.plus.UiUtilities;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
@ -66,12 +64,15 @@ import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
||||||
import net.osmand.plus.monitoring.OsmandMonitoringPlugin;
|
import net.osmand.plus.monitoring.OsmandMonitoringPlugin;
|
||||||
import net.osmand.plus.myplaces.FavoritesActivity;
|
import net.osmand.plus.myplaces.FavoritesActivity;
|
||||||
import net.osmand.plus.quickaction.QuickActionType;
|
import net.osmand.plus.quickaction.QuickActionType;
|
||||||
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings.OsmandPreference;
|
||||||
import net.osmand.plus.settings.fragments.BaseSettingsFragment;
|
import net.osmand.plus.settings.fragments.BaseSettingsFragment;
|
||||||
import net.osmand.plus.views.layers.MapInfoLayer;
|
|
||||||
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
||||||
import net.osmand.plus.views.OsmandMapTileView;
|
import net.osmand.plus.views.OsmandMapTileView;
|
||||||
import net.osmand.plus.views.mapwidgets.widgetstates.WidgetState;
|
import net.osmand.plus.views.layers.MapInfoLayer;
|
||||||
import net.osmand.plus.views.mapwidgets.widgets.TextInfoWidget;
|
import net.osmand.plus.views.mapwidgets.widgets.TextInfoWidget;
|
||||||
|
import net.osmand.plus.views.mapwidgets.widgetstates.WidgetState;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import net.osmand.util.GeoPointParserUtil.GeoParsedPoint;
|
import net.osmand.util.GeoPointParserUtil.GeoParsedPoint;
|
||||||
import net.osmand.util.MapUtils;
|
import net.osmand.util.MapUtils;
|
||||||
|
@ -158,7 +159,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
public static final int AV_CAMERA_FOCUS_CONTINUOUS = 5;
|
public static final int AV_CAMERA_FOCUS_CONTINUOUS = 5;
|
||||||
// photo shot:
|
// photo shot:
|
||||||
private static int shotId = 0;
|
private static int shotId = 0;
|
||||||
private SoundPool sp = null;
|
private SoundPool soundPool = null;
|
||||||
public static final int FULL_SCEEN_RESULT_DELAY_MS = 3000;
|
public static final int FULL_SCEEN_RESULT_DELAY_MS = 3000;
|
||||||
|
|
||||||
public final CommonPreference<Integer> AV_CAMERA_PICTURE_SIZE;
|
public final CommonPreference<Integer> AV_CAMERA_PICTURE_SIZE;
|
||||||
|
@ -585,6 +586,17 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean init(@NonNull final OsmandApplication app, Activity activity) {
|
public boolean init(@NonNull final OsmandApplication app, Activity activity) {
|
||||||
|
if (AV_PHOTO_PLAY_SOUND.get()) {
|
||||||
|
loadCameraSound();
|
||||||
|
}
|
||||||
|
AV_PHOTO_PLAY_SOUND.addListener(new StateChangedListener<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(Boolean change) {
|
||||||
|
if (AV_PHOTO_PLAY_SOUND.get() && soundPool == null) {
|
||||||
|
loadCameraSound();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
// initializeRemoteControlRegistrationMethods();
|
// initializeRemoteControlRegistrationMethods();
|
||||||
// AudioManager am = (AudioManager) app.getSystemService(Context.AUDIO_SERVICE);
|
// AudioManager am = (AudioManager) app.getSystemService(Context.AUDIO_SERVICE);
|
||||||
// if (am != null) {
|
// if (am != null) {
|
||||||
|
@ -593,6 +605,21 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadCameraSound() {
|
||||||
|
if (soundPool == null) {
|
||||||
|
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
||||||
|
}
|
||||||
|
if (shotId == 0) {
|
||||||
|
try {
|
||||||
|
AssetFileDescriptor assetFileDescriptor = app.getAssets().openFd("sounds/camera_click.ogg");
|
||||||
|
shotId = soundPool.load(assetFileDescriptor, 1);
|
||||||
|
assetFileDescriptor.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("cannot get shotId for sounds/camera_click.ogg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerLayers(MapActivity activity) {
|
public void registerLayers(MapActivity activity) {
|
||||||
this.mapActivity = activity;
|
this.mapActivity = activity;
|
||||||
|
@ -1327,21 +1354,6 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
@Override
|
@Override
|
||||||
public void surfaceCreated(SurfaceHolder holder) {
|
public void surfaceCreated(SurfaceHolder holder) {
|
||||||
try {
|
try {
|
||||||
// load sound befor shot
|
|
||||||
if (AV_PHOTO_PLAY_SOUND.get()) {
|
|
||||||
if (sp == null)
|
|
||||||
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
|
||||||
if (shotId == 0) {
|
|
||||||
try {
|
|
||||||
AssetFileDescriptor assetFileDescriptor = app.getAssets().openFd("sounds/camera_click.ogg");
|
|
||||||
shotId = sp.load(assetFileDescriptor, 1);
|
|
||||||
assetFileDescriptor.close();
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("cannot get shotId for sounds/camera_click.ogg");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Parameters parameters = cam.getParameters();
|
Parameters parameters = cam.getParameters();
|
||||||
parameters.setPictureSize(selectedCamPicSize.width, selectedCamPicSize.height);
|
parameters.setPictureSize(selectedCamPicSize.width, selectedCamPicSize.height);
|
||||||
log.debug("takePhotoWithCamera() set Picture size: width=" + selectedCamPicSize.width
|
log.debug("takePhotoWithCamera() set Picture size: width=" + selectedCamPicSize.width
|
||||||
|
@ -1723,6 +1735,11 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void disable(OsmandApplication app) {
|
public void disable(OsmandApplication app) {
|
||||||
|
if (soundPool != null) {
|
||||||
|
soundPool.release();
|
||||||
|
soundPool = null;
|
||||||
|
shotId = 0;
|
||||||
|
}
|
||||||
// AudioManager am = (AudioManager) app.getSystemService(Context.AUDIO_SERVICE);
|
// AudioManager am = (AudioManager) app.getSystemService(Context.AUDIO_SERVICE);
|
||||||
// if (am != null) {
|
// if (am != null) {
|
||||||
// unregisterMediaListener(am);
|
// unregisterMediaListener(am);
|
||||||
|
@ -2037,8 +2054,8 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
|
||||||
photoJpegData = data;
|
photoJpegData = data;
|
||||||
|
|
||||||
if (AV_PHOTO_PLAY_SOUND.get()) {
|
if (AV_PHOTO_PLAY_SOUND.get()) {
|
||||||
if (sp != null && shotId != 0) {
|
if (soundPool != null && shotId != 0) {
|
||||||
sp.play(shotId, 0.7f, 0.7f, 0, 0, 1);
|
soundPool.play(shotId, 0.7f, 0.7f, 0, 0, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,22 @@
|
||||||
package net.osmand.plus.routing;
|
package net.osmand.plus.routing;
|
||||||
|
|
||||||
|
|
||||||
|
import android.content.res.AssetFileDescriptor;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.SoundPool;
|
import android.media.SoundPool;
|
||||||
|
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
|
import net.osmand.StateChangedListener;
|
||||||
import net.osmand.binary.RouteDataObject;
|
import net.osmand.binary.RouteDataObject;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
|
||||||
import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.settings.backend.OsmandSettings;
|
|
||||||
import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
|
import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
|
||||||
import net.osmand.plus.routing.AlarmInfo.AlarmInfoType;
|
import net.osmand.plus.routing.AlarmInfo.AlarmInfoType;
|
||||||
import net.osmand.plus.routing.RouteCalculationResult.NextDirectionInfo;
|
import net.osmand.plus.routing.RouteCalculationResult.NextDirectionInfo;
|
||||||
import net.osmand.plus.routing.data.StreetName;
|
import net.osmand.plus.routing.data.StreetName;
|
||||||
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
|
import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener;
|
||||||
|
import net.osmand.plus.settings.backend.OsmandSettings;
|
||||||
import net.osmand.plus.voice.AbstractPrologCommandPlayer;
|
import net.osmand.plus.voice.AbstractPrologCommandPlayer;
|
||||||
import net.osmand.plus.voice.CommandBuilder;
|
import net.osmand.plus.voice.CommandBuilder;
|
||||||
import net.osmand.plus.voice.CommandPlayer;
|
import net.osmand.plus.voice.CommandPlayer;
|
||||||
|
@ -80,7 +82,10 @@ public class VoiceRouter {
|
||||||
private int TURN_IN_DISTANCE;
|
private int TURN_IN_DISTANCE;
|
||||||
private int TURN_IN_DISTANCE_END;
|
private int TURN_IN_DISTANCE_END;
|
||||||
private int TURN_NOW_DISTANCE;
|
private int TURN_NOW_DISTANCE;
|
||||||
|
|
||||||
|
private SoundPool soundPool;
|
||||||
|
private int soundClick = -1;
|
||||||
|
|
||||||
private VoiceCommandPending pendingCommand = null;
|
private VoiceCommandPending pendingCommand = null;
|
||||||
private RouteDirectionInfo nextRouteDirection;
|
private RouteDirectionInfo nextRouteDirection;
|
||||||
|
|
||||||
|
@ -103,8 +108,36 @@ public class VoiceRouter {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
app.getAppCustomization().addListener(customizationListener);
|
app.getAppCustomization().addListener(customizationListener);
|
||||||
|
|
||||||
|
if (!isMute()) {
|
||||||
|
loadCameraSound();
|
||||||
|
}
|
||||||
|
settings.VOICE_MUTE.addListener(new StateChangedListener<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(Boolean change) {
|
||||||
|
if (!isMute() && soundPool == null) {
|
||||||
|
loadCameraSound();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadCameraSound() {
|
||||||
|
if (soundPool == null) {
|
||||||
|
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
||||||
|
}
|
||||||
|
if (soundClick == -1) {
|
||||||
|
try {
|
||||||
|
// Taken unaltered from https://freesound.org/people/Corsica_S/sounds/91926/ under license http://creativecommons.org/licenses/by/3.0/ :
|
||||||
|
AssetFileDescriptor assetFileDescriptor = app.getAssets().openFd("sounds/ding.ogg");
|
||||||
|
soundClick = soundPool.load(assetFileDescriptor, 1);
|
||||||
|
assetFileDescriptor.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setPlayer(CommandPlayer player) {
|
public void setPlayer(CommandPlayer player) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
if (pendingCommand != null && player != null) {
|
if (pendingCommand != null && player != null) {
|
||||||
|
@ -1015,18 +1048,8 @@ public class VoiceRouter {
|
||||||
if (isMute()) {
|
if (isMute()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
|
if (soundPool != null && soundClick != -1) {
|
||||||
int soundClick = -1;
|
soundPool.play(soundClick, 1, 1, 0, 0, 1);
|
||||||
boolean success = true;
|
|
||||||
try {
|
|
||||||
// Taken unaltered from https://freesound.org/people/Corsica_S/sounds/91926/ under license http://creativecommons.org/licenses/by/3.0/ :
|
|
||||||
soundClick = sp.load(settings.getContext().getAssets().openFd("sounds/ding.ogg"), 1);
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
if (success) {
|
|
||||||
sp.play(soundClick, 1 ,1, 0, 0, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ import static net.osmand.plus.settings.backend.OsmandSettings.TerrainMode.HILLSH
|
||||||
public class TerrainLayer extends MapTileLayer {
|
public class TerrainLayer extends MapTileLayer {
|
||||||
|
|
||||||
private final static Log log = PlatformUtil.getLog(TerrainLayer.class);
|
private final static Log log = PlatformUtil.getLog(TerrainLayer.class);
|
||||||
private Map<String, SQLiteTileSource> resources = new LinkedHashMap<String, SQLiteTileSource>();
|
private Map<String, SQLiteTileSource> resources = new LinkedHashMap<String, SQLiteTileSource>();
|
||||||
private final static String HILLSHADE_CACHE = "hillshade.cache";
|
private final static String HILLSHADE_CACHE = "hillshade.cache";
|
||||||
private final static String SLOPE_CACHE = "slope.cache";
|
private final static String SLOPE_CACHE = "slope.cache";
|
||||||
private int ZOOM_BOUNDARY = 15;
|
private int ZOOM_BOUNDARY = 15;
|
||||||
|
@ -69,7 +69,6 @@ public class TerrainLayer extends MapTileLayer {
|
||||||
} else {
|
} else {
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void indexTerrainFiles(final OsmandApplication app) {
|
private void indexTerrainFiles(final OsmandApplication app) {
|
||||||
|
@ -78,7 +77,6 @@ public class TerrainLayer extends MapTileLayer {
|
||||||
private String type = mode.name().toLowerCase();
|
private String type = mode.name().toLowerCase();
|
||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... params) {
|
protected Void doInBackground(Void... params) {
|
||||||
|
|
||||||
File tilesDir = app.getAppPath(IndexConstants.TILES_INDEX_DIR);
|
File tilesDir = app.getAppPath(IndexConstants.TILES_INDEX_DIR);
|
||||||
File cacheDir = app.getCacheDir();
|
File cacheDir = app.getCacheDir();
|
||||||
// fix http://stackoverflow.com/questions/26937152/workaround-for-nexus-9-sqlite-file-write-operations-on-external-dirs
|
// fix http://stackoverflow.com/questions/26937152/workaround-for-nexus-9-sqlite-file-write-operations-on-external-dirs
|
||||||
|
@ -92,17 +90,21 @@ public class TerrainLayer extends MapTileLayer {
|
||||||
sqliteDb = null;
|
sqliteDb = null;
|
||||||
}
|
}
|
||||||
if (sqliteDb != null) {
|
if (sqliteDb != null) {
|
||||||
if (sqliteDb.getVersion() == 0) {
|
try {
|
||||||
sqliteDb.setVersion(1);
|
if (sqliteDb.getVersion() == 0) {
|
||||||
}
|
sqliteDb.setVersion(1);
|
||||||
sqliteDb.execSQL("CREATE TABLE IF NOT EXISTS TILE_SOURCES(filename varchar2(256), date_modified int, left int, right int, top int, bottom int)");
|
}
|
||||||
|
sqliteDb.execSQL("CREATE TABLE IF NOT EXISTS TILE_SOURCES(filename varchar2(256), date_modified int, left int, right int, top int, bottom int)");
|
||||||
|
|
||||||
Map<String, Long> fileModified = new HashMap<String, Long>();
|
Map<String, Long> fileModified = new HashMap<String, Long>();
|
||||||
Map<String, SQLiteTileSource> rs = readFiles(app, tilesDir, fileModified);
|
Map<String, SQLiteTileSource> rs = readFiles(app, tilesDir, fileModified);
|
||||||
indexCachedResources(fileModified, rs);
|
indexCachedResources(fileModified, rs);
|
||||||
indexNonCachedResources(fileModified, rs);
|
indexNonCachedResources(fileModified, rs);
|
||||||
sqliteDb.close();
|
sqliteDb.close();
|
||||||
resources = rs;
|
resources = rs;
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -151,7 +153,6 @@ public class TerrainLayer extends MapTileLayer {
|
||||||
indexedResources.insert(filename, new QuadRect(left, top, right, bottom));
|
indexedResources.insert(filename, new QuadRect(left, top, right, bottom));
|
||||||
fileModified.remove(filename);
|
fileModified.remove(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
} while(cursor.moveToNext());
|
} while(cursor.moveToNext());
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
@ -173,7 +174,6 @@ public class TerrainLayer extends MapTileLayer {
|
||||||
}
|
}
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
executeTaskInBackground(task);
|
executeTaskInBackground(task);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue