|
POST
|
Hi. Thanks for the question. Here's what I think is happening. Scheduled updates are pre-packaged downloads of changes that are created on the server at an interval determined by the web map's owner (perhaps once a day, at 6am, in preparation for mobile users to start their day with all the updates from the previous 24 hours). So, if you make changes to the web map, there will only be scheduled updates available for download after the next scheduled packaging (in the above example, this would be after 6am). In your case, I'm guessing that the next scheduled packaging hasn't happened yet, so Runtime won't see an update when you call checkForUpdates (remember, that just checks for packaged up scheduled updates). The scheduled updates enhancement to preplanned maps was created to help large mobile workforces efficiently keep their offline maps up to date, but scheduled updates only provide a read-only offline map experience. This page covers scheduled updates in more detail. If you want to immediately pick up changes made in the preplanned web map, you will need to modify your code to not opt in to the scheduled update workflow and just do a regular sync. Hope that helps.
... View more
08-19-2021
08:44 AM
|
1
|
2
|
4373
|
|
POST
|
Right. I'd recommend you create a VTPK in Pro from the source data. You can then directly download or sideload that to your computer. What you are currently doing is this: Use ArcGIS Pro to publish a Vector Tile Layer to ArcGIS Online from the source data. Connect Pro to the published layer. Export the published layer as a VTPK using the ArcGIS Pro tool. This extracts and then downloads the data (or a portion of it) that you just uploaded to ArcGIS Online when publishing the layer. To do this, the service must do work to package up its data for download as a new VTPK. Copy that downloaded VTPK to your app. What I'm suggesting is that you do this: Use ArcGIS Pro to create a VTPK from the source data. Copy that VTPK to your app. If you need the vector tile layer service too, then also upload and publish the VTPK to ArcGIS Online. That way you're generating one VTPK, and not causing work on the server to create a new VTPK and download it. Perhaps I'm misunderstanding something, but I'm working off this understanding: You have the source data. You need to have a vector tile layer of this data hosted in ArcGIS Online for some reason other than just to make a VTPK. You have an application that uses a VTPK of this data. You are using Pro to create a VTPK from the vector tile layer hosted in ArcGIS Online. You are distributing the VTPK to a computer or computers running a custom app once it has been created by Pro. There is nothing that will automatically generate and download a VTPK whenever a vector tile layer is updated, but you can use the the Runtime SDKs to export a VTPK or use the REST API's Export Tiles call when you know the service has been updated. I still think it could be more efficient to make the VTPK in Pro from the source data. Does that help? I'm worried I haven't properly understood what you're asking.
... View more
08-17-2021
08:43 AM
|
0
|
0
|
3124
|
|
POST
|
Thanks Aspen. Is there some reason you cannot generate the VTPK in Pro directly from the source data then at the same time as you publish the Vector Tile Layer to ArcGIS Online? Granted, I'm not an expert in ArcGIS Pro, but you should be able to do that (I wouldn't be surprised if Pro is actually creating a VTPK behind the scenes and uploading that to ArcGIS Online anyway).
... View more
08-12-2021
01:37 PM
|
0
|
2
|
3157
|
|
POST
|
Hi Aspen. When you say "publish out the content as a vector tile web layer to ArcGIS Online", do you mean you have a feature service in ArcGIS Online and are publishing that to a Vector Tile Layer in ArcGIS Online? Or are you publishing the Vector Tile Layer from some other source?
... View more
08-12-2021
01:03 PM
|
0
|
4
|
3159
|
|
POST
|
I think you shouldn't include the query parameters in the URL. Try simply using this when creating the ServiceFeatureTable. https://services3.arcgis.com/df7XtT0Re4z8S561/arcgis/rest/services/redlist_species_data_7b024e64_0fd8_48a2_adf0_8e43737b5cb3/FeatureServer/0 Note, you can call loadAsync on the ServiceFeatureTable and see if there's a loadError to help home in on the cause of issues like this. All Runtime classes that work with remote resources will implement the Loadable pattern. See this page for more details. Hope that helps.
... View more
08-06-2021
07:38 AM
|
1
|
0
|
1372
|
|
POST
|
Perhaps this sample will help: https://developers.arcgis.com/net/wpf/sample-code/authenticate-with-oauth/ The key thing is that you set up a couple of things ahead of time: the OAuth configuration (in WPF that appears to be registering a ServerInfo with the Runtime's AuthenticationManager) handlers (an IOAuthAuthorizeHandler to display the OAuth page and get an auth token back from it, and the AuthenticationManager's ChallengeHandler to trigger that custom IOAuthAuthorizeHandler) Then when you access the Portal, Runtime will take care of using the configuration and handlers to authenticate. I'm not entirely sure about the redirect URL in .NET (I focus on the iOS SDK and each SDK handles authentication in a very platform-appropriate way) but I think the redirect URL might be fairly arbitrary, with the key part being that what's configured in the Developer Dashboard matches what's configured in the Runtime app's OAuthClientInfo, and that the app is configured to recognize the URL. Either way, I think that sample above will help. Hopefully someone on the .NET team can clarify just how an app is configured to be associated with a redirect URL.
... View more
08-06-2021
07:33 AM
|
0
|
0
|
2049
|
|
POST
|
Hi Thomas. You should be able to do both, although there is some custom code required for the basemap options, and it depends on the basemaps you want to use. The fetchLegendInfos should just work against layers in an offline map. If that's not the case, let me know and we can dig in some more. For the basemaps, you can switch out the basemap for an offline map, but if you want to do that while offline, you will need basemaps downloaded to your device, and you will need to manage and load those yourself (there is no equivalent to the Portal.fetchBasemaps call). Imagery basemaps and old image tile basemaps are downloaded as a TPK file. Vector tile basemaps are downloaded as a VTPK file and a Style Resource folder (this contains the style definition JSON, sprites, etc.). You can use the AGSExportTileCacheTask and AGSExportVectorTilesTask to download these. Once downloaded, you can open them as AGSArcGISTileLayer or AGSArcGISVectorTiledLayer respectively, create an AGSBasemap of that layer, and set that as the basemap on your offline AGSMap. Note, for vector tile basemaps you do not need to download the tiles multiple times for every style you want offline. The ArcGIS vector tile basemap styles all use the same set of tiles, but different style resources to render them. So you can download the tiles once for a particular geographic area, and separately call exportStyleResourceCacheJobWithDownloadDirectory to get individual style overrides. One caveat: Runtime does not yet allow you to change vector tile layer styles on the fly, so whenever your app changes the basemap style you would need to create a new AGSArcGISVectorTileLayer with a new style selection and update your map's basemap. You can see some sample code for downloading vector tile basemaps here: https://developers.arcgis.com/documentation/mapping-apis-and-services/offline/offline-data/#download-a-vector-tile-basemap-layer Hope that helps.
... View more
08-05-2021
10:35 AM
|
0
|
0
|
1871
|
|
POST
|
Hi. You don't use the FileManager. See here for more details about how to re-open the downloaded map. Can you explain more about what you want the user experience to be when you say "I need to be able to go do a different area in the map, view my offline maps, then show them after downloading them, not just replace the current screen."? Are you using preplanned offline maps or on-demand offline maps? A Map View (AGSMapView) displays a single map at any one time. Each downloaded map is a separate map, so when you display one, you are displaying it instead of whichever map (online, or offline) the map view was previously displaying. If you need to merge the contents of multiple downloaded maps into a single map and display that merged map in the map view, that's possible but would require some coding. You'd essentially need to load multiple separate maps as described in the link above, but not display them, then copy the basemap layers and operational layers from each into one destination AGSMap, which is the map you would display.
... View more
07-26-2021
07:57 AM
|
0
|
2
|
1931
|
|
POST
|
The limitation is actually on the number of tiles that a service allows in a single export. The image tile based basemap export services (which export TPKs) have a limit of 150,000 tiles per generated package (this is true whether you use a tool like TPK Kreator, Runtime's APIs, or Pro). Vector tile services (which export VTPKs) have a limit of 10,000 (but their tiling scheme is different). Runtime will allow you to use multiple tile packages together to provide greater coverage, so you can generate a number of tile packages and combine them into one Basemap in Runtime. Or you could create a Pro map using multiple tile packages and export a Mobile Map Package that combines them into a single Map to save you combining them in code. The Mobile Map Package would still contain multiple TPK files, but gluing them together would be handled in the Map defined in the MMPK. You could conceivably create a new tile package from that Pro map, but I think you might end up duplicating work in rendering the new tiles. I haven't tried that approach. Hope this helps.
... View more
07-07-2021
02:23 PM
|
0
|
0
|
3207
|
|
POST
|
Indeed, and yes 🙂 screenToLocation will return a geometry in the map's spatial reference. I saw that @NathanCastle1 pointed you in the direction of GeometryEngine.Project() to turn that into a WGS84 point that will contain longitude and latitude in its x and y properties. If you simply want to display the coordinates as Lat/Lon then, as @NathanCastle1 pointed out, CoordinateFormatter should work. Hope that helps!
... View more
06-23-2021
07:19 AM
|
0
|
0
|
2398
|
|
POST
|
If you use WGS84 coordinates with a Web Mercator spatial reference, the point will not move very much and will be close to 0,0 lat/lon (which is off the coast of Africa). Web Mercator units are meters, and WGS84 coordinates are in the range of +/-90º Latitude and +/-180º Longitude. So if you're using x values between -180 and +180 and y values between -90 and +90 (which will be considered as meters from 0,0 when using Web Mercator as the spatial reference), then you can imagine the point will barely move unless you are zoomed in a long way, and will never move far from 0,0. Fortunately, Runtime will look at the spatial reference property of a geometry as well as the x and y property and project it appropriately for the map's spatial reference (which in most cases is the spatial reference of the basemap, typically Web Mercator). So, unless you are doing a lot of intensive geometry processing, you can probably just continue to use a WGS84 point. If you need to project the geometry, you can save Runtime from doing this on the fly by using GeometryEngine to project geometries to other spatial references (in your case, the spatial reference of the map, almost certainly Web Mercator). In fact, there is a screenshot at that link that shows how 45º,-94º lat/lon is about -10503190m, 5653794m x/y. Hope that makes sense and helps.
... View more
06-21-2021
11:33 AM
|
1
|
2
|
2441
|
|
POST
|
Hi, You are correct. The fetchData method is async, and so you will see the "fetch data not done" message before the fetchData even makes the request. You need to hold on to each "att", which can probably be done by holding on to each "attachments" array in the same way as you are holding on to the "features" array. Otherwise, each attachments array returned from "fetchAttachments" will go out of scope at the end of the completion block and be deallocated, and so all the "att" objects will be released before their fetchData calls can complete, and their callbacks will not be entered. Hope that helps! Nick
... View more
06-14-2021
08:52 AM
|
0
|
1
|
1479
|
|
POST
|
Yep. If you want to know for a specific GraphicsOverlay, you can call GeoView.indentifyGraphicsOverlay() and pass in the graphics overlay in question. If you want to consider all the GraphicsOverlays in your MapView, you can call GeoView.indentifyGraphicsOverlays(). There are also overrides that allow you to specify a max number of results to return. See the full list here.
... View more
06-02-2021
07:11 AM
|
1
|
2
|
1691
|
|
POST
|
Hi Roman. Thanks for the info. That's helpful. So you just need to know which vector tile layer was tapped on so that you can call identify against the corresponding feature layer? That seems a little tricky to do at present. Here's one possible approach: You could add the corresponding feature layers to the map with opacity 0 (in the same order as their visual Vector Tile layers) and then rely on MapView.IdentifyLayersAsync() to return you the first popup for each backing service. Just take the first result (that will be the topmost layer that had something to identify at the tapped point). I'll update this if I think of a better solution, but if I understand what you're trying to do, that should work. (Update: Having checked with the team, this is the best solution available at the moment). You could potentially refine that even more by keeping those layers to one side and only adding them to the Map when you are ready to do the Identify, and remove them after. That might not be necessary, depending on your app. Opacity 0 should work, but you might need to pick a very small non-0 value (e.g. 0.001). I see the value of the configurable approach that Pro provides. I'll run it by the team.
... View more
05-27-2021
07:54 AM
|
1
|
1
|
4110
|
|
POST
|
Hi. The data in Vector Tiles is static and purely used for rendering, so the connection back to the source data is lost when the tiles are created. But as of Runtime 100.9 (2D) and 100.10 (3D), Runtime supports Feature Tiles by default when accessing a feature service. This fetches features from a feature service as PBF tiles, so you get a lot of the performance of vector tiles with the dynamic content of a feature layer. This is not quite as fast as static vector tile layers, but is pretty close and does give you full access to feature attributes and identify capabilities. If you are interested in identifying individual features in one of our hosted basemaps, that is not currently supported. Is there specific basemap data you are interested in identifying?
... View more
05-26-2021
03:56 PM
|
0
|
3
|
4137
|
| 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 |