POST
|
Hi Paul, We have a similar GeodatabaseSyncTask for the 100.X series - see GeodatabaseSyncTask QML Type | ArcGIS for Developers. The parameters type (SyncGeodatabaseParameters QML Type | ArcGIS for Developers ) lets you define layerOptions as before, so hopefully that should give you what you need. This sample should give you a idea of how to work with the API: arcgis-runtime-samples-qt/ArcGISRuntimeSDKQt_QMLSamples/Features/GenerateGeodatabase at master · Esri/arcgis-runtime-sam… . In terms of the OfflineMapTask, I believe the expected behavior is that the non-spatial tables should be taken offline. One thing to check is that the feature service meets the requirements to be taken offline - see Work offline—ArcGIS Runtime SDK for Qt | ArcGIS for Developers You could also try logging the job messages after you have attempted to take the map offline - that could help identify why those tables have been skipped. If you print the Job's json that gives even more details since it will output the information for every sub-job (e.g. taking inddividual layers/tables offline). I hope that helps - let me know how you get on. Luke
... View more
09-12-2019
01:16 AM
|
0
|
5
|
777
|
POST
|
Thanks for trying that out Norbert. The limits of tile counts etc. are not something we have control over via Runtime code so I'm not an expert on whether those have any hard limits. A couple of observations though: 1. Tiled data tends to increase dramatically in size with every additional LOD you include (I think it's a quadratic increase). If you can limit the amount of data you need to take offline by even a single LOD you will see a massive reduction in the size of the data. If you take an approach like that you may want to dynamically set the maxSale property of your Map and ArcGISTiledLayer (e.g. the basemap layers) to 0 (or your desired maxScale) so that you can zoom in fully. That will mean that the basemapp data is up-sampled when you zoom past the available data. An up-sampled tiled layer eventually starts to look pixelated/blocks but generally it is fine for the next scale down or so. 2. If you take a look at our "Basemap by reference" workflow (see arcgis-runtime-samples-qt/ArcGISRuntimeSDKQt_CppSamples/Maps/GenerateOfflineMapLocalBasemap at master · Esri/arcgis-runt… for a sample) you may be able to avoid taking the basemap offline each time. The idea with this workflow is that you can place the basemap (e.g. a tpk) on your device ahead of time (for example create it using Pro and then side load it to your device or export once). Then you can configure the Offline workflows to re-use that basemap for each new offline map. I hope that helps, Luke
... View more
09-06-2019
05:22 AM
|
1
|
1
|
1365
|
POST
|
Hi Norbert - thanks for reporting the issue. One thing that can help track down the problem is to write the Job out to JSON. This should include all of the sub-job messages which provides more details about what is going on. Esri Tiled services set a maximum number of tiles which can be exported - but it sounds as though both basemaps are for your own tiled services? Luke
... View more
09-05-2019
09:57 AM
|
1
|
3
|
1365
|
POST
|
Hi Norbert, > The sample code is attached to this thread, see top of the page. Got it thanks! I'll give the code sample a try and see if I can repro the links. In my testing yesterday I was just doing a quick check of the process memory info but we can use ValGrind to look at what is going on. I did notice this line in your sample code: m_tiledLayer = new Esri::ArcGISRuntime::ArcGISTiledLayer(tpkCache); That tiled layer is missing a parent object and so won't get cleared up when you call delete this; That would certainly leak - but I'm not sure if there is something else going on as well. Could you try with a parent added for that allocation and see if your results are affected? Thanks, Luke
... View more
08-29-2019
02:20 AM
|
0
|
7
|
543
|
POST
|
Hi Norbert, I'm having trouble with that download link that you supplied but I believe I can reproduce the same thing with my own code. We will try and look into that and also any information that comes through via the support issue you logged. Here's a snippet of the repro code I'm using - let me know if that looks substantially different to what you are doing: void TestMemoryLeakQuick::recreateMap() { emit usedMemoryBytesChanged(); qDebug() << usedMemoryBytes(); if (m_parent) { delete m_parent; m_parent = nullptr; m_mapView->setMap(nullptr); m_map = nullptr; } m_parent = new QObject(this); const QString tpkPath{".../tpk/SanFrancisco.tpk"}; auto tileCache = new TileCache(tpkPath, m_parent); auto tiledLayer = new ArcGISTiledLayer(tileCache, m_parent); auto basemap = new Basemap(tiledLayer, m_parent); m_map = new Map(basemap, m_parent); if (m_mapView) { m_mapView->setMap(m_map); } }
... View more
08-28-2019
08:11 AM
|
0
|
9
|
543
|
POST
|
Hi Norbert - thanks for reporting this one. Which constructor are you using for the ArcGISTiledLayer? From the stack it looks like you are supplying a TileCache directly? Could you possibly post a code snippet (including any parent QObjects etc.) showing how you are creating these objects? Thanks again, Luke
... View more
08-28-2019
04:35 AM
|
0
|
12
|
543
|
POST
|
Hi, If you want to get the elevation at a lat/long in your 3D app you can follow this process: - obtain the Surface from your Scene object (see https://developers.arcgis.com/qt/latest/cpp/api-reference/esri-arcgisruntime-scene.html#baseSurface) - create a Point at your lat/long (see https://developers.arcgis.com/qt/latest/cpp/api-reference/esri-arcgisruntime-point.html#Point-2). Be careful the constructor expects the inputs in long(x), lat(y) order. - run an asynchronous locationToElevation operation on your Surface supplying your location Point (https://developers.arcgis.com/qt/latest/cpp/api-reference/esri-arcgisruntime-surface.html#locationToElevation) I hope that helps, Luke
... View more
05-27-2019
09:17 AM
|
0
|
0
|
354
|
POST
|
Hi Anastasiia, Currently the OfflineMapTask only supports taking a single map area offline for each download operation. If you want to take 2 distinct map areas offline, you would need to create 2 separate mobile map packages. In your code example above, I think you would need to change this line: val downloadJob = offlineMapTask.downloadPreplannedOfflineMap(mapArea, directory) to supply a different directory each time (I'm not an Android expert so I could be wrong). For example, you could append the map area's title onto the directory so you have one package called "Europe" and one called "Berlin" or similar. However, if you need to be able to transition from the Europe wide scale to Berlin within a single map document that may not work for you. To achieve that, you could consider a workflow along these lines: - Export a tile package for the Europe scale ahead of time using the "ExportTileCacheTask". Store the resulting .tpk on your device in a well known location. - Download the preplanned map area for Berlin into your device as now. - in Runtime code, when you come to load the map from the mobile map package, dynamically insert an ArcGISTiledLayer constructed from your Europe tpk into the map Alternatively, depending on your data, you may be able to set up your webmap so that it contains data for both ranges. I hope that helps, Luke
... View more
05-14-2019
01:55 AM
|
2
|
0
|
424
|
POST
|
Hi Laurynas, There are a couple of things which may be worth considering with your example code: There is no explicit call to fetchAttachments on the attachmentListModel that I can see. That's probably ok, as I think these should be set to autoFetchAttachments - but worth double-checking. The second possibility is that, because your geodatabase is offline, the attachments are already "fetched" (e.g. no network request needs to be made). If that is the case, your example would never receive the attachmentListModel.fetchAttachmentsStatusChanged signal (because the status is already complete). If that is the case, you should be able to update your code to check the status first and execute the same logic that you have in your connect statement. I hope that helps, Luke
... View more
04-11-2019
06:52 AM
|
0
|
0
|
281
|
POST
|
Hi Paul, I think the way to do this is by accessing the serviceUrl property of the geodatabase which provides the data for the offline feature layer. One approach to get to that would be something like: - get the operationalLayers from the map - find the layer you are interested in - cast the layer to a feature layer and get it's featureTable - cast the feature table to a geodatabase feature table - access the geodatabase property of the table I hope that's helpful, Luke
... View more
04-11-2019
12:58 AM
|
0
|
1
|
536
|
POST
|
Thanks Joe, I see that your replica has the following relation defined: Spatial Relation: Intersects Is it possible that the adds are not meeting this constraint in some way?
... View more
03-15-2019
07:04 AM
|
0
|
1
|
1136
|
POST
|
Hi Joe, Would you be able to share any detail of the workflow? - Are you using the OfflineMapTask to obtain these geodatabases and if so, are you using the on-demand or pre-planned workflow? - what kind of edits are you making? - do you sync back using the OfflineMapSyncTask? Thanks, Luke
... View more
03-15-2019
04:10 AM
|
0
|
1
|
1136
|
POST
|
Hi there, I just have a couple of questions about the data you are using here: Are these non spatial tables part of a relationship? Are they i the same feature service as the operational feature layers you are successfully taking offline. To confirm that there were no errors as part of taking these tables offline, you can check the property GenerateOfflineMapResult::tableErrors() returned by the job.
... View more
03-08-2019
09:45 AM
|
1
|
0
|
491
|
Title | Kudos | Posted |
---|---|---|
1 | 05-04-2018 04:22 AM | |
1 | 11-02-2022 06:25 AM | |
1 | 07-12-2022 05:35 AM | |
4 | 10-21-2021 01:58 AM | |
1 | 07-12-2021 01:09 AM |
Online Status |
Offline
|
Date Last Visited |
03-25-2024
03:44 PM
|