|
POST
|
Note that technically you just need to set maxScale. It's a combination of 3 things. You should set maxScale = 0 on the AGSMap to ensure that Runtime will allow your app to zoom in all the way. You should set maxScale = 0 on the layer to ensure that Runtime will display the layer even beyond its original declared scale range as you zoom in. (Set minScale if you also want it displayed all the way as you zoom out.) In this case, a Tiled Layer, you should set the noDataTileBehavior to .upSample to ensure the layer is drawn with the best available tile even if there is not specific tile for the map scale as you zoom in. There was a bug in Runtime 100.x which meant that layers with some tiling schemes would fail to display beyond the level that tiles had been created even if you set maxScale = 0. This was fixed at 100.5. Thanks for your help in reproducing this, Mike. Nick.
... View more
06-21-2019
01:40 AM
|
0
|
0
|
5576
|
|
POST
|
If you are just using the default location data source on mapView.locationDisplay.dataSource, it'll be an AGSCLLocationDataSource which exposes its CLLocationManager via its locationManager property. Not sure how you created your dispatch queue, but I believe the current recommended approach is to use dispatch_get_global_queue(QOS_CLASS_UTILITY) to set the queue's priority. It shouldn't matter if it's serial or concurrent. Try an async dispatch to that. Cheers, Nick P.S. Hmm. Yeah. Email replying to DMs doesn't seem to work. You need to reply to DMs via the browser. I'll see if that's something we can fix. Turns out that because I'm an admin, we can DM in the browser without me following you but the email gateway doesn't get that message. We're checking if GeoNet can be improved in that regard.
... View more
06-20-2019
04:10 PM
|
0
|
0
|
3554
|
|
POST
|
Hi Michael, As per my DM, were you able to verify this is fixed in 100.5? Thanks, Nick
... View more
06-19-2019
01:15 PM
|
0
|
2
|
5576
|
|
POST
|
Hi Paul. I stumbled upon your question while trying to figure this out myself, so figured I'd share what I learnt. You can use the revokeToken endpoint (https POST only) to revoke OAuth access tokens or refresh tokens. Pass in auth_token and client_id. Optionally also pass in token_type_hint as "access_token" or "refresh_token" (otherwise we'll first check if it's an access token and if it's not, check if it's a refresh token). Note that: Only one-step OAuth tokens generated with user logins (i.e. not clientid/secret) can be revoked. Revoking a refresh token revokes all access tokens generated from it. Revoking a token that's invalid/revoked/expired/isn't the right type will return "success". This was introduced with the latest release of ArcGIS Online (so after your most recent comment, I believe) and documentation should be coming with the next release. Hope this helps. Nick.
... View more
06-17-2019
08:44 AM
|
0
|
2
|
4659
|
|
POST
|
Hi Steve. Can you share some more about how you're presenting and using the AGSPopupsViewController? A repro case would be really helpful. We have seen the Done button disappear in the simulator, which appeared to be a simulator bug. If you rotate the simulator (command + right or left cursor) then the button reappeared. But we've never seen that on a device. Cheers, Nick.
... View more
06-12-2019
07:35 AM
|
0
|
3
|
1497
|
|
POST
|
Hi. Yes, that's correct. Behind the scenes, AGSGenerateOfflineMapJob will do the work you previously had to do manually in collecting the various layers together and setting a map up to use them. You can still use the old method if you like, but the GenerateOfflineMapJob is much simpler and takes care of a lot of the hard work. Generally you can use this unless you have very specific needs for taking your data offline, in which case you can lean on the older per-service based approach. See this video from the 2019 DevSummit for more details: ArcGIS Runtime: Working with Maps Online and Offline Note that there's also the Preplanned workflow which may be suitable, depending on your use cases. It's also discussed in the above video. Both AGSGenerateOfflineMapJob and AGSDownloadPreplannedOfflineMapJob are created using the AGSOfflineMapTask). Hope this helps, Nick.
... View more
06-11-2019
10:35 AM
|
0
|
0
|
696
|
|
POST
|
Could you provide sample code and data? Do you have an image of what you expect it to look like? Thanks! Nick
... View more
06-11-2019
09:09 AM
|
0
|
0
|
936
|
|
POST
|
If the value is < 0, add 360. -179 becomes 181. -10 becomes 350, etc.
... View more
06-11-2019
06:01 AM
|
0
|
0
|
7783
|
|
POST
|
License Key vs Named User You are correct. If you don't want your app's user to need an ArcGIS Online or on-premise named user account, then you will need a Runtime License. A single license key is valid for a single user on a single device. License keys are sold in packs. Basic vs Standard It depends on what your workflow is. Basic: If you are using one of the in-built workflows for editing, taking the data offline and synchronizing using ArcGIS feature services with either the OfflineMapTask or the GenerateGeodatabaseTask (which make use of mobile geodatabases), then the Basic License will suffice. It does include editing capabilities. If this is what you were referring to in your original question, Basic is the right license for you. Standard: If you are building your own editing workflow that relies on something called a "File Geodatabase", perhaps generated by ArcGIS Desktop, then you will need to do a fair bit of work as we don't currently provide workflows for this. And at that point, to access the File Geodatabase, you would need Standard. Note also that if you are just editing data stored in a completely public ArcGIS feature service (i.e. anyone can edit the data with no authentication required), you only need Lite, but that is such a rare use case, it's seldom mentioned. JS API from the Web The Lite/Basic/Standard/Advanced Licenses are Runtime specific. For the web, you should use Named Users.
... View more
06-05-2019
04:01 AM
|
0
|
1
|
2047
|
|
POST
|
Ah. It looks like you're interacting with the map view. When you do that, the autoPan mode is reset to .off. You could use the autoPanModeChangeHandler to detect when that happens and either enable a button in your UI (remember to dispatch to main, since the handler could be invoked on any thread), or you could switch the autoPan mode back again (perhaps after a delay). You'll need to think what you want your UX to be. locationDisplay.autoPanModeChangedHandler = { [weak self] newMode in
if newMode == .off {
DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {
self?.mapView.locationDisplay.autoPanMode = .navigation
})
}
}
Or you could just set the interactionOptions appropriately: mapView.interactionOptions.isPanEnabled = false
mapView.interactionOptions.isRotateEnabled = false Again, which option you pick depends on the UX you want for your app. Hope that helps.
... View more
06-04-2019
11:27 AM
|
0
|
0
|
2109
|
|
POST
|
Hmm. Which queue were you starting the location display from? For most scenarios you'd have to explicitly move off the main queue yourself. I just wonder if it's the dispatch_async that's the solution here rather than dispatching to the main queue. My hunch is that dispatch_async is incidental to the real cause (essentially under certain conditions if the location display is started too soon while the map is readied, the logic for tracking movement got stuck which affected auto-pan). This should be fixed in 100.6. I also just noticed that in your code above your app will have two CLLocationManagers running. One is owned and managed by the mapView.locationDisplay and one is owned and managed by your app. Is there a reason for that?
... View more
06-03-2019
02:17 PM
|
0
|
2
|
3554
|
|
POST
|
This guide documentation should help: Edit features—ArcGIS Runtime SDK for Android | ArcGIS for Developers In short, you create a feature using the table, set the attributes and geometry, and then add it to the table. Working with offline geodatabases, that is all you need to do. If you are working with a ServiceFeatureTable connected directly to a service, you will also need to call applyEdits.
... View more
05-29-2019
09:31 AM
|
1
|
5
|
2460
|
|
POST
|
For editing the local geodatabase (i.e. offline editing) you will need the Basic level Runtime license or above (the ability to edit offline and sync back is one of the primary differences between Basic and Lite level Runtime licensing). You can license at Basic level by: Logging in to ArcGIS Online (or on-premise portal) as a named user of type Editor, Field Worker, Creator, or GIS Professional (or if using an older on-premise portal, a Level 2 named user). See here for more info on the user type, and here for how to license. Buying a Runtime Basic License Pack from your local distributor. Using the license pack means your application user does not have to have an ArcGIS Online subscription. See here for how to use a key from a license pack. Note that you can use a Developer subscription but you will only be able to edit your own data (developer accounts cannot access private data that is shared from other accounts).
... View more
05-29-2019
09:19 AM
|
1
|
3
|
2047
|
|
POST
|
Hi Mohamad Fathin, You could set them up something like this: private readonly LinearUnit _metersUnit = LinearUnits.Meters;
private readonly AngularUnit _degreesUnit = AngularUnits.Degrees; or just call DistanceGeodetic like this: GeodeticDistanceResult distance = GeometryEngine.DistanceGeodetic(mapPoint1, mapPoint2, LinearUnits.Meters, AngularUnits.Degrees, GeodeticCurveType.Geodesic); See LinearUnits and AngularUnits. Hope that helps! Nick.
... View more
05-29-2019
04:48 AM
|
0
|
4
|
7783
|
| Title | Kudos | Posted |
|---|---|---|
| 2 | 05-14-2026 07:07 AM | |
| 2 | 04-30-2026 10:59 AM | |
| 4 | 04-22-2026 08:07 AM | |
| 1 | 01-29-2026 09:39 AM | |
| 1 | 12-17-2025 10:12 AM |