|
BLOG
|
With Developer Summit being virtual this year, we thought we'd pull together some resources to help you get the most out of the Runtime team and our sessions this year. Start off by making sure you watch the plenary sessions. There's one each day, and the Runtime will be covered during Tuesday's plenary. Runtime team members are presenting a number of technical sessions and demo theaters throughout the week. You can find a great rundown of those in this blog post. And when we're not presenting sessions, we'll be hanging out at the Runtime SDKs channel in the "Ask our Experts" area of the Developer Summit website where you can chat one-on-one with us and really dig into your Runtime questions and feedback. Ask our Experts hours are (all times Pacific daylight time, aka UTC-7:00): Tuesday April 6th: 10am - 4:15pm Wednesday April 7th: 7am - 8:30am & 10am - 3pm Thursday April 8th: 7am - 8:30am & 10am - 3pm You can find an overview agenda of the 3 days here, with a detailed session-by-session agenda here. Lastly, as a quick reference, below is a link to the homepage of each SDK which includes reference doc, open source toolkits, sample apps, and much more: .NET Android iOS Java Qt And if you're new to the ArcGIS Platform, the Mapping APIs and Services guide doc is a great place to start. Other helpful links: Contact Esri Support: https://support.esri.com/en/contact-tech-support Runtime product life cycles: https://support.esri.com/en/Products/Developers/native-runtime-sdks/arcgis-runtime-sdk-for-dotNET/100-10#product-support We hope you have a great conference and look forward to meeting you and learning about how you use the Runtime in the Ask the Experts chat.
... View more
04-05-2021
01:06 PM
|
0
|
0
|
916
|
|
POST
|
Unfortunately, Runtime does not support reprojecting vector tile layers on the fly. You would need to republish the vector tile layers in the same WKID. Note that we do have some WGS84 basemaps, in case that's the reference of your tile layers. If you're using vector tile layers to present features from a feature service, note that you could use Feature Tiles. This was added to Runtime at 100.9. It balances the speed of static vector tiles with the content of features.
... View more
03-26-2021
12:51 PM
|
0
|
0
|
873
|
|
POST
|
Hi, The Scene has a BaseSurface property of type Surface. A Surface includes a collection of elevation sources in its ElevationSources property. You should be able to remove the elevation source from that collection.
... View more
03-23-2021
07:48 AM
|
0
|
0
|
1292
|
|
POST
|
Hi. Identify is deliberately meant to be a user-driven operation, hence it works with visible layers. However, you might be able to get the effect you want by setting the opacity of each "invisible" layer to 0, set the isVisible property to true, perform the identify, and then revert the opacity back to 1.0 and the isVisible to false. The layer will technically be visible, but you won't be able to see it. You might need to set the opacity to something very small (e.g. 0.001) but I think 0 will work. The other way to do this is to make queries against each individual layer's featureTable (that's what Identify does behind the scenes) and synchronize the responses with a DispatchGroup. Let me know if the opacity trick works.
... View more
03-15-2021
04:11 PM
|
0
|
1
|
1870
|
|
POST
|
Hi. The GenerateGeodatabaseJob is used for taking data offline from a single feature service. The GenerateOfflineMapJob downloads an ad-hoc area of a web map to use offline, including data in the web map. It will download various components of the web map and its contents as an offline map (it's really a folder on the device containing the downloaded components, but you typically don't dig around in there and just work with the downloaded offline map - see here). Behind the scenes, the GenerateOfflineMapJob could spawn one or more GenerateGeodatabaseJobs to download data from one or more feature services that the web map references. That's why both refer to offline data, since your ability to work with the data is the same, whether it's downloaded directly from the service, or behind the scenes as part of downloading the web map. In the GenerateGeodatabase case you access that offline data directly. In the GenerateOfflineMap case, you access it through the offline map. Whether you would use a GenerateOfflineMapJob or GenerateGeodatabaseJob depends on whether you are working with web maps or directly with feature services. If you are taking multiple feature services, tiled layers, vector tiled layers, and basemaps offline, try to use a web map and the GenerateOfflineMapJob (or a preplanned offline map). It will save a lot of code, and is typically the more appropriate option. This page can help determine which option you want to use. Hope this helps.
... View more
02-20-2021
12:09 PM
|
0
|
0
|
1328
|
|
POST
|
Unfortunately that capability isn't available in the Android SDK. You would have to capture traffic with Charles Proxy or Fiddler or something along those lines.
... View more
02-19-2021
09:37 AM
|
0
|
0
|
3027
|
|
POST
|
It's hard to know without understanding how you are getting the JSON. Can you explain a little about that please? Where is the JSON coming from? How are you reading it? But you could try a couple of things: Load the AGSMap to see what loadError you get, if any. You would call test.load() and handle the error in the completion block. See https://developers.arcgis.com/ios/programming-patterns/loadable/ for more details. Check the traffic that's being sent and received. Try setting AGSRequestConfiguration.global().debugLogRequests and debugLogResponses to true. You will see network traffic in the Xcode console. However, I would still like to understand how you are getting the JSON and whether you can just create an AGSPortalItem and construct the AGSMap from that.
... View more
02-17-2021
01:23 PM
|
1
|
1
|
1695
|
|
POST
|
Hi. Sorry for the slow response. You should write to a local file and then extract it once you've done your test. You could write it to the user's documents folder somewhere and then extract the file. You can get the documents folder with this swift code: let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! And you can add the Application supports iTunes file sharing property to your Info.plist file and set it to YES. That way you can browse to the file using a Finder window. Of course, if you want to, your app can always upload that file somewhere if you prefer, but Runtime will only write to the file on local storage. Also, be sure not to include this debug logging in your production code by default. It has a performance impact. Hope that helps.
... View more
02-17-2021
08:02 AM
|
1
|
1
|
3045
|
|
POST
|
Hi Jay. Is that your production code in the code snippet you provided above? I don't see any simulation there, so I think it might be. If it's not, you should not change the location data source but continue to use the AGSRouteTrackerLocationDataSource in production. But I think you are doing that. Assuming this is your production code, I'd need to understand more. Are your simulations and driving tests hitting the same routing service? Is there any difference in how you've wired up the AGSRouteTrackerDelegate? I assume you're seeing a routeTrackerRerouteDidStart delegate event? You could also try using AGSRequestConfiguration.global().debugLogRequests and debugLogFileURL to get some insight into the requests that are being made by Runtime.
... View more
02-12-2021
02:05 PM
|
0
|
5
|
3101
|
|
POST
|
Hi Fabio. That's unexpected. Sorry about that. Could you try the license page for a different API, like Java? https://developers.arcgis.com/java/license-and-deployment/license/ It would be the same key. Otherwise, could you try a different browser? In the meantime, we'll try to look into it although so far we haven't been able to reproduce this. Do you perhaps have a content blocker that could be preventing the site displaying your license key? But yes, when you use an API key at the Lite level, production costs are according to service consumption as reflected on the pricing page and shown in your developer dashboard.
... View more
02-11-2021
03:35 PM
|
0
|
2
|
2862
|
|
POST
|
Do you need to load the JSON, or do you just need top open a web map? If you just need to open a web map, you can see this tutorial: https://developers.arcgis.com/ios/maps-2d/tutorials/display-a-web-map/ If you need to take web map JSON and work with that directly, you can also use AGSMap.fromJSON().
... View more
02-09-2021
01:56 PM
|
0
|
0
|
1739
|
|
BLOG
|
The Runtime team has been hard at work for the past few months to bring you the latest update of the Runtime SDK for iOS, update 10. Here are some highlights: ArcGIS Platform support: ArcGIS Platform is a Platform as a Service (PaaS) that introduces access to our location services using an API key. You get the same geocoding, routing, and basemap layer capabilities that you're used to, but accessed using API keys that lets you monitor and control usage. This doesn't change how your application uses ArcGIS (unless you want it to!). Rather, it provides a new way to access services, one that better supports applications that don't require users to log in to ArcGIS. To this end, many Runtime classes now have an APIkey property. You can set a global API key on the AGSArcGISRuntimeEnvironment to cover your entire application, or you can get more fine-grained and set API keys on individual remote resources such as tasks, service feature tables, and scene layers. If you need to combine named user (OAuth) logins with API keys, use the fine grained properties. If you just want to use API keys for your whole app, set the API key on AGSArcGISRuntimeEnvironment. You manage your API keys, including creating them, deleting them, and what they provide access to (their scope) in the developer dashboard. To learn more and see if the ArcGIS Platform and API keys are right for you, visit the blog post and check out the launch event recording. xcframework: We now deliver the Runtime SDK for iOS as an xcframework. This won't matter to you if you use CocoaPods, but if you integrate the SDK manually, see the breaking changes section of the release notes to learn more. New Map constructor: ArcGIS Platform comes with a new set of basemap styles that can be used with API keys for full usage tracking. Runtime has a new AGSMap constructor and a new AGSBasemapStyle enum to make use of these styles. Your old apps and code will continue to work, but we will eventually deprecate the old constructors. Smaller offline basemap downloads: Many of Esri's vector tile basemaps have an optimized version available for offline use. This reduces the number of fonts that are downloaded and typically reduces the download size by about 70MB. You can now opt in to downloading this optimized style by setting the esriVectorTilesDownloadOption property on the download parameters when using AGSExportVectorTilesTask and AGSOfflineMapTask. Note, the reduced set of fonts are generally Latin alphabet only, so be sure this supports your application requirements. Automatically use "for export" basemaps: For best performance, many of Esri's image tiled basemaps have long had for export versions available. The AGSOfflineMapTask has always switched to these automatically for you, but now the AGSExportTileCacheTask can do the same. High accuracy GPS: The AGSLocationDisplay framework has always allowed you to plug in your own location provider technology to the Runtime SDK. A new AGSNmeaLocationDataSource lets you parse NMEA messages from high-accuracy GNSS devices, similar to capabilities found in ArcGIS Field Maps. Labeling in 3D: Labeling has long been a 2D only thing in the Runtime. Not any more! iPad mouse, trackpad, and keyboard support: To see the full list of supported keyboard shortcuts, users can long-press the command (⌘) key when the pointer is over the map or scene. Graphics performance: If you use graphics with multiple attribute values, performance is significantly improved now! There's a ton more to play with too, as you can see in the release notes and the announcement on the ArcGIS blog. As always, we really hope you find these updates useful, and look forward to seeing what you build.
... View more
01-28-2021
09:53 AM
|
0
|
0
|
1273
|
|
POST
|
You can set up a layer status change handler on AGSMapView (or AGSSceneView). By listening to this, you can get status updates for layers as you navigate the map. You would want to look at the status property on the AGSLayerViewState object that is provided for the layer(s) in question. This is an enum of type AGSLayerViewStatus. You should keep an eye out for a status of warning, which means Runtime was able to communicate with the service, but there was a problem getting some data. The AGSLayerViewState object also has an error property which will give you more info about the warning status, but see the documentation for more details. Hope that helps.
... View more
01-06-2021
07:51 AM
|
2
|
1
|
1645
|
|
POST
|
By default it will expect the OSM tiling scheme. But you can create your own AGSTileInfo object with appropriate origin and tile size and construct an AGSWebTiledLayer using that. That would work if all y values were -ve (i.e. the origin is way up north). I confess I'm not familiar with the TMS spec but a quick scan didn't highlight a way that y would be inverted (south of the tile scheme origin was +ve y, north of the origin was -ve y), but it's entirely possible I missed it. Regardless, if that's the case you can also provide a custom tile request handler that changes the sign of the row, makes the request (potentially using an AGSRequestOperation), and provides the tile data. Does that work for you?
... View more
12-29-2020
12:20 PM
|
1
|
1
|
1704
|
|
POST
|
To run in developer mode and see the watermark (and be able to use the Shapefile), do not set a license at all. I suspect you are actually using your Lite license (which is what you find at the developer dashboard - there is no such thing as a development license key).
... View more
12-09-2020
07:26 AM
|
0
|
0
|
1727
|
| 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 |