Inthe app we call ArcGISRuntimeEnvironment.SetLicense(key) with a key for a Basic license.
What I'm finding is that the user still cannot edit secured features, i.e. their own license level is taking precedence over the Basic license. What I was hoping for was that the Basic license key applied to the app would enable all users to take advantage of the Basic editing capabilities.
Is the behaviour I'm seeing expected? Is it supposed to be possible to override the named user license with a key and perhaps I'm just doing something wrong?
ArcGIS Runtime levels can be licensed through user types or through a license key. You must assign a user type with the appropriate ArcGIS Runtime level to members of your organization based on the level of access they need. The following table lists which ArcGIS Runtime level is included with each user type:
Yes, the behavior you are seeing is as expected. One you login with a particular License level , capabilities are determined by that level. You cannot change license level once ArcGISRuntimEnvironment has been initialized.
I still see the same behaviour even when I apply the Basic license key first - before the runtime is initialized - and then sign in afterwards. It still says I do not have permission to edit. Does the named user's license just always take precedence over the license set in the runtime environment?
When I zoom in and out with the mouse wheel it some times take about 4-20 seconds before all the tiles for the extent is loaded. 20 seconds! is really slow. In the Javascript API it is no wait time near this at all. I have 8 GB Mem. 4 core cpu, NVIDIA Quadro K2100M GPU. Anyone experience this? It seems to be loading a lot of tiles. As it sends request for every step I reach during the wheel zoom operation. Shouldn't there be an cancellation of previous requests that doesn't count any more since the extent has changed? There is also the animation on between the zoom levels that slow the zooming process down as well. It should be able to urn this off or at least adjust the time of the animation.
CPU usage is also quite high during the zoom operation. Previous attempt with CPU profiler (RedGate) points to the animation (at least in pre 100.2), though it is hard to say if these things are related. Another vote for disabling and/or controlling zoom duration for MapView and SceneView
I just did some minor testing in a small application with one map using ArcGIS Runtime for .NET WPF, and another using ArcGIS Runtime for WPF. Both maps are 500x500 pixels. Since I currently only have a track pad, and and that doesn't do well with gesture zoom, I arm myself with my maps, Fiddler and rectangular select.
The newer runtime loads tiles for each zoom level it traverses on the way to the target level, without cancelling any of the tiles from the skipped levels, and in addition download a lot more tiles that are not displayed. If the MapServer of the layer is slow, this results in a very poor user experience. If using multiple basemaps are visible (i.e basic maps blended with Opacity against areal photo), this makes the experience even worse.
My MapView is only 500x500px, but from just LoD 14, 25 tiles are loaded in the new runtime. Why does it insist on downloading that many tiles for the level, in addition to requesting tiles for levels that are not displayed?
There are no request cancellations related to this zoom operation, even if i disable Just My Code. The Cancellation/WebExceptions/ObjectDisposed will occur if I double click many times to zoom in, but do not occur even once for this experiment.
Specified by:init in interface IDynamicCacheLayerManagerParameters:map - A reference to a com.esri.arcgis.carto.IMap (in)layer - A reference to a com.esri.arcgis.carto.ILayer (in)Throws:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.getFolderNamepublic String getFolderName() throws IOException, AutomationExceptionIf cache exists, returns the layername plus guid. If cache does not exists, returns nothing. Remarks The folder name is composed of a clean layer name (layer name without special characters) plus a global unique identifier (GUID).
Specified by:getFolderName in interface IDynamicCacheLayerManagerReturns:The cacheFolderNameThrows:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.getFolderPathpublic String getFolderPath() throws IOException, AutomationExceptionThe full path of the cache parent directory if the the cache exists. Remarks Returns the full Path of the Parent Folder of the cache that is associated with the layer.
Specified by:getFolderPath in interface IDynamicCacheLayerManagerReturns:The folderPathThrows:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.setFolderPathpublic void setFolderPath(String folderPath) throws IOException, AutomationExceptionThe full path of the cache parent directory if the the cache exists. Remarks The Dynamic Cache Layer Manager will first try to connect to the cache defined by the new Folder Path and the Layers cache name. If it can not connect, a new cache will be generated.
Specified by:isCacheable in interface IDynamicCacheLayerManagerReturns:The cacheableThrows:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.deletepublic void delete() throws IOException, AutomationExceptionDelete the cache structure and tiles from the disk. Remarks If the dynamic display is active, the cache will be recreated once the delete method is called.
Specified by:delete in interface IDynamicCacheLayerManagerThrows:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.invalidatepublic void invalidate(IEnvelope extent, boolean doubleBuffer) throws IOException, AutomationExceptionInvalidate a certain area of the cache, according to the given extent. If the input extent is null, invalidates the entire cache. Duoble-buffer does not show changes until new tiles are available. Remarks Passing a null extent will result in update of the cache for the entire layer (determined by the layer area of interest).
Specified by:invalidate in interface IDynamicCacheLayerManagerParameters:extent - A reference to a com.esri.arcgis.geometry.IEnvelope (in)doubleBuffer - The doubleBuffer (in)Throws:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.getFormatpublic String getFormat() throws IOException, AutomationExceptionThe name of the tile format which is used by the cache. Remarks There are two compression formats which are supported by the dynamic display PNG and JPEG. In both cases, the 32 bit image format is used (although JPEG only supports 24 bits out-of-the-box, ESRI has extended the format in order to support transparency).
By their nature, the two compression formats are different from each other. PNG format is at best when it is compressing discrete colors and tends to bloat when a continuous image is being used (such as aerial photo). On the other hand, JPEG compression is usually better in terms of compression (takes less disk space) and is much better with continuous images; however when it comes to discrete colors, the result may be a bit twisted and can look blurry.
At runtime, when the dynamic display is active, changing the compression format will result in regeneration of the cache. If the dynamic display is not active (or hasnt been activated), the new format information will be written to the layer information and as soon as the dynamic display is activated, the existing cache will be rebuild.
Specified by:getFormat in interface IDynamicCacheLayerManagerReturns:The formatThrows:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.setFormatpublic void setFormat(String format) throws IOException, AutomationExceptionThe name of the tile format which is used by the cache. Remarks There are two compression formats which are supported by the dynamic display PNG and JPEG. In both cases, the 32 bit image format is used (although JPEG only supports 24 bits out-of-the-box, ESRI has extended the format in order to support transparency).
Specified by:setFormat in interface IDynamicCacheLayerManagerParameters:format - The format (in)Throws:IOException - If there are interop problems.AutomationException - If the ArcObject component throws an exception.connectpublic void connect(String newFolderPath, String newFolderName) throws IOException, AutomationExceptionTry to connect the given layer to a cache. Remarks Please note that in order to connect to an existing cache, youmust know the folder path which contains the cacheinformation you will connect to. The folder-name is composed fromthe layer name together with a global unique identifier assigned bythe dynamic display when it got generated.
3a8082e126