Trouble caching maps in a Service

3091
0
10-06-2014 02:28 PM
JeffJones1
New Contributor

Hi all,

So far the API has been great, but I'm having trouble trying to complete a feature in my app.

I create a service that runs an ExportTilesCacheTask on a time interval, the idea being that the app would automatically cache maps in the background so that the user still has a map available if they lose a data connection.

I have already accomplished caching in the maps fragment itself, however transferring this code into a service has caused problems.

I believe the culprit is either the Envelope or the SpatialReference that I am passing into the ExportTileCacheParameters instance.

Here is my code:

final ExportTileCacheTask tileTask = new ExportTileCacheTask(serviceURL, cred);

  Envelope extentToStore = new Envelope();

  Location lastKnown;

  MainActivity.LocationServicesConnection locService = null;

  lastKnown = waitForLocation(locService);

  extentToStore.centerAt(new Point(lastKnown.getLatitude(), lastKnown.getLongitude()), 0.2, 0.2);

  ArcGISTiledMapServiceLayer layer = new ArcGISTiledMapServiceLayer(serviceURL, cred);

  ExportTileCacheParameters params = new ExportTileCacheParameters(false, 15, 19, extentToStore,  layer.getSpatialReference());

  createTileCache(params, tileTask, Environment.getExternalStorageDirectory().getPath() + DEFAULT_MAP_PATH);

I'm not sure if I'm correctly creating the Envelope or the SpatialReference. Pulling the SR from a layer seems hacky and inefficient.

In the logcat I first see a "FileNotFoundException" followed by errors in the callbacks from estimateTileCacheSize and generateTileCache.

This code works perfectly in my map fragment, so I have to think it's the Envelope or SR causing this. Anyone?

0 Kudos
0 Replies