POST
|
I'm not an expert in this, but I think the file that does NOT have embedded SR will need both the XML auxiliary file AND a world file (which positions/scales the image). See this gist for an example, including some links at the bottom that talk some more about aux and world files.
... View more
a week ago
|
0
|
0
|
110
|
POST
|
In addition to what @SomeGISGuy said above, since you mentioned creating a gallery, there is also the ArcGIS Maps SDK for .NET toolkit, which includes an open-source Basemap Gallery component.
... View more
a week ago
|
0
|
0
|
151
|
POST
|
Hi @RTC The postscript is purely about the API Key capabilities introduced at ArcGIS Enterprise 11.4 (see link). If you're seeing that an API Key is invalid, it means it's not scoped to access the services you're using it for. For basemaps, simply follow the instructions here. API Keys can be created by either an ArcGIS Online account or an ArcGIS Location Platform account, but the important thing is to ensure that they're scoped for the service you want to access. Follow the instructions above to create an API Key and it should by default include Basemaps styles service access (which is what's needed for the service you're hitting.
... View more
2 weeks ago
|
0
|
1
|
283
|
POST
|
Hi. This is likely not a licensing issue. API Keys don't impact licensing at all. They just provide access to services. Here's what I think is happening: I am taking a guess, but I expect that when you use an API Key, you are setting it globally on ArcGISEnvironment. When that happens, the SDK blindly uses that API Key across the board and doesn't even try the AuthenticationManager workflows, which are responsible for getting suitable access tokens for various services - in this case your logged-in user's access token via OAuth which will confer access to those web maps. To use both API Keys and named user access tokens, one brute-force approach is what you're doing now - you unset that global API Key, and the SDK will then get a token for the user in question, which of course gives them access to their web maps. A more refined approach might be to set the API Key specifically on the Basemap objects you create in code, and not at the global ArcGISEnvironment level. The key there is that Basemap implements APIKeyResource (scroll down to see which classes support this). Here's the full list of API classes that are APIKeyResources: This means you can specifically set an API Key on any of these, which will take precedence over any other token we might have (or try to get hold of) for that item through AuthenticationManager. If an API Key is NOT set, then the SDK will use AuthenticationManager. You could even use separate API Keys for RouteTask, LocatorTask, and Basemaps you create in code if you wanted, and the SDK will then fall back to AuthenticationManager for everything else. In a little more detail… when determining which access token to use for a remote resource, the SDK follows this logic: Does the object (e.g. RouteTask) have an API Key set on it explicitly? If so, use that. If not, is there a global API Key set on ArcGISEnvironment? If so, use that. If not, let's ask AuthenticationManager for an access token (e.g. OAuth, or your custom authentication challenge handler, etc.). Hope that helps. P.S. When I talk about API Keys above, I mean in the context of Location Platform and ArcGIS Online; the Native Maps SDKs do not yet support ArcGIS Enterprise API Keys.
... View more
2 weeks ago
|
0
|
2
|
316
|
BLOG
|
We’re pleased to announce a special ArcGIS Runtime SDK for Android 100.15.7 patch release, adding 16KB page size support. Follow the Install and set up instructions or download the release here. This release is key for customers still using the ArcGIS Runtime SDK for Android in apps in the Google Play Store. From November 1, the Google Play Store will reject app updates that do not include 16KB page size support for 64-bit Android 15 devices. Even if developers are not planning further updates to their ArcGIS Runtime SDK for Android apps, they should consider adopting this patch release to ensure that users are not presented with a “page size compatible mode” alert whenever their apps are run on 64-bit Android 15 devices or later. Please note: This 100.15.7 patch release inherits the product life cycle of all 100.15.x releases: currently in Mature Support and entering Retirement on September 1, 2027. We recommend that developers using ArcGIS Runtime SDK for Android familiarize themselves with the product life cycle for the ArcGIS Runtime SDKs and plan to migrate their apps to ArcGIS Maps SDK for Kotlin. For those developers already using the ArcGIS Maps SDK for Kotlin, 16KB page size support was added in version 200.7 in April 2025.
... View more
3 weeks ago
|
3
|
0
|
492
|
POST
|
Excellent! Seems there's always another way to break things. Glad that was it, because otherwise I was out of ideas 🧐
... View more
a month ago
|
1
|
0
|
460
|
POST
|
Yes. That's correct. I still think the "forbidden" error is coming from the service (in contrast to us locking the API by license level). Has your mobile worker's Role been modified to disabled Network Analysis?
... View more
a month ago
|
0
|
2
|
464
|
POST
|
Hi @RTC. To clarify… there are two things being discussed here: Routing (creating turn-by-turn directions using the RouteTask API and the World Routing service or an MMPK) Navigating (following along the route, getting real-time guidance, using the RouteTracker API) There are also two other things that you talk about that are a bit muddied above: Licensing the SDK (Lite, Basic, Standard) Accessing the World Routing Service (with an appropriate access token) There's no licensing restriction to use the World Routing service or an MMPK to calculate turn-by-turn directions (Routes). However, you will need an appropriately scoped access token to use the World Routing service. To use the RouteTracker API for interactive navigation, you need a Basic license unless you are using the World Routing Service, in which case Lite is sufficient (when you pay Esri for the route calculation, that includes use of the RouteTracker API). That's covered in the Lite section of the Licensing and Capabilities table: Navigate a route using the RouteTracker API and ArcGIS location services. If you're using an MMPK (or some other routing service), then you need a Basic License to use the RouteTracker API. That's covered in the Basic section of the Licensing and Capabilities table: Navigate a route using the RouteTracker API and any ArcGIS routing service, or a network dataset that is stored locally on the device. So yes, Mobile Worker user type will allow you to use the interactive navigation guidance capabilities of the RouteTracker API with any service or local network dataset. But if you're using the World Routing service, you can even use the RouteTracker API with a Viewer user type. But: either way you need to make sure you have an access token for the World Routing service. I suspect that the "forbidden" error is because the access token you're using is not properly scoped (perhaps it just includes basemaps?). See this tutorial on selecting privileges. Hope that helps!
... View more
a month ago
|
0
|
4
|
481
|
POST
|
Hi @woodie. I was able to confirm that ANCPI deliberately took this action to prevent desktop GIS applications (both Esri and open source) from accessing the data as some of the data is sold via https://epay.ancpi.ro/epay/Welcome.action I'm unable to tell what the rules are, but they at least specifically block any user agent that contains "ArcGIS" (case sensitive). I'm told that QGIS is similarly blocked. You would need to petition ANCPI to make a change to their servers to allow the Native Maps SDKs to access them.
... View more
09-03-2025
10:43 AM
|
0
|
0
|
311
|
POST
|
Hi. I took a look with the Swift SDK and it looks like your server is rejecting requests coming from the Native SDKs because of the User-Agent header. Not seen that before, but I reproduced this in Postman too. The Native SDKs add a User-Agent string to all requests. In my Swift SDK test app, the string is this: User-Agent: ArcGISMaps-Swift/200.7 (iOS 18.5; iPhone17,1,Simulator; devmode) com.esri.tutorial.Display-a-web-map/1.0 It'll be something similar for the Kotlin SDK. To open the layer, the SDKs will make a couple of metadata requests: https://geoportal.ancpi.ro/hosted_services/rest/info?f=json https://geoportal.ancpi.ro/hosted_services/rest/services/Hosted/imobile_cladiri/VectorTileServer?f=json If I make Postman GET requests to either of those URLs with no User-Agent header, I get valid JSON responses. But as soon as I add a User-Agent header like the one above, I get an HTML error response and the VectorTileLayer will fail to load with a "forbidden" error. Can you check with your server admin and see if there's configuration on the server that could be rejecting these User-Agent Native SDK headers? For reference, here's some sample output I get from the Swift SDK's ConsoleNetworkLogger: Request sent:
URL: https://geoportal.ancpi.ro/hosted_services/rest/info?f=json
Method: GET
Request headers: User-Agent: ArcGISMaps-Swift/200.7 (iOS 18.5; iPhone17,1,Simulator; devmode) com.esri.tutorial.Display-a-web-map/1.0
Request completed:
URL: https://geoportal.ancpi.ro/hosted_services/rest/info?f=json
Method: GET
Data: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /hosted_services/rest/info
on this server.</p>
</body></html>
Response headers: Connection: Keep-Alive, Content-Length: 227, Content-Type: text/html; charset=iso-8859-1, Date: Fri, 29 Aug 2025 19:10:26 GMT, Keep-Alive: timeout=5, max=100, Server: Apache, X-Content-Type-Options: nosniff To start to figure these things out, you can check the loadStatus on the VectorTileLayer or Map. I then used the ConsoleNetworkLogger to see the requests being made that were getting a loadStatus error, dug into the them a bit, and figured the only difference between a browser and the SDK might be the User-Agent string. I'm not familiar enough with Kotlin to recommend how to track requests like I can with the Swift ConsoleNetworkLogger, so I'll let someone on the Kotlin team pipe up if they have recommendations.
... View more
08-29-2025
12:37 PM
|
0
|
0
|
422
|
POST
|
@Jeffrey_McNeal wrote: I am not familiar with Gist? Ah. Sorry. The link I provided in my first reply: https://gist.github.com/nixta/9cf3b53e3340dc3314c6db40af06c709 A "Gist" is just a small snippet hosted on GitHub.
... View more
05-13-2025
11:25 AM
|
1
|
0
|
765
|
POST
|
You just need to place the world and aux files alongside the JPG and the SDK will find them when you create the raster. Think of it this way: in the context of a georeferenced raster, the JPG file alone is incomplete data (hence the SDK error). Complete data is the JPG file + the World file + the Aux file. Contrast with a GeoTIFF where a single file is complete data for a georeferenced raster. The error could be better, and we could improve the documentation around the need for world and aux files. I'll pass that on to the team. For the aux file, you should just be able to copy straight from the Gist. For the world file, you'll need to make sure it's updated to properly position and scale the image. At the bottom of the gist there are links to documentation that describe world and aux files in more detail.
... View more
05-12-2025
10:00 AM
|
1
|
2
|
804
|
POST
|
Are you georeferencing the JPG file properly? Since JPGs have no georeferencing data built in, you need to provide a World file (which defines the size and location of the image) and an Aux file (which defines a spatial reference). See this example: https://gist.github.com/nixta/9cf3b53e3340dc3314c6db40af06c709 If you are already doing that, then can you try to just add the raster layer directly to the operational layers so we can discount Group Layer being an issue?
... View more
05-12-2025
07:15 AM
|
0
|
1
|
817
|
POST
|
Thanks for your question, @JasonDick. You may be veering into use of the SDK where we have to explore specific limitations as defined in the Product Specific Terms of Use. Firstly, you cannot use the Native Maps SDKs in a server context. This is highlighted in item 19 in that document (a requirement under "ArcGIS Maps SDK for Java, Kotlin, .NET, Qt, Swift, or Flutter"): 19. License may not be used to develop Internet or server-based Value-Added Applications. But to add to @Ting's comment, while the Lite license does indeed cover GeometryEngine, overall use of any of the Native Maps SDKs with a Lite license does first require that you are using it in conjunction with another Esri product or products. See item 62 in that document (a requirement under Lite ArcGIS Runtime Deployment License): 62. Value-Added Applications must be used in conjunction with other Esri Products. Examples of other Esri products include ArcGIS Online, ArcGIS Location Platform, or ArcGIS Enterprise to deliver services, ArcGIS Pro to create and maintain data packages for use by your application, or for example ArcGIS StreetMap Premium. Unfortunately, based on your description of your app (no other Esri product being used), it seems you would not be allowed to use the ArcGIS Maps SDK for .NET. Sorry to be the bearer of bad news, but feel free to DM me if you would like to explore this further.
... View more
04-17-2025
03:21 PM
|
1
|
1
|
613
|
POST
|
Hey @ChristopherSwingley, thanks for the info (and sorry for the slow response!). Yeah, to my non-Qt developer eye that does look somewhat confusing. I'll check with the team to see if the code being there is an oversight, and if not, whether for a sample like this the comments could be more helpful.
... View more
03-27-2025
02:00 PM
|
0
|
0
|
504
|
Title | Kudos | Posted |
---|---|---|
3 | 3 weeks ago | |
1 | a month ago | |
1 | 05-13-2025 11:25 AM | |
1 | 05-12-2025 10:00 AM | |
1 | 04-17-2025 03:21 PM |