|
POST
|
I'll put in a request, but in the meantime you could just add an extension to AGSBasemap if you wanted… extension AGSBasemap {
public class func darkNavigationVectorBasemap() -> AGSBasemap {
let darkNavigationURL = URL(string: "https://www.arcgis.com/home/item.html?id=b69e76a446ac479998ff31de839ba323")!
return AGSBasemap(baseLayer: AGSArcGISVectorTiledLayer(url: darkNavigationURL))
}
}
... View more
10-02-2019
08:10 AM
|
2
|
0
|
831
|
|
POST
|
Swift doesn't have an async keyword, so you'll need to structure your function not to return a string, but instead to require a callback block. Something like this: func getValueSum(geo : AGSGeometry, completion: @escaping (String)->Void) {
let queryParameters = AGSQueryParameters()
queryParameters.geometry = geo
queryParameters.spatialRelationship = AGSSpatialRelationship.intersects
queryParameters.outSpatialReference = self.mapView.spatialReference
self.featureTable?.queryFeatures(with: queryParameters, completion: { (result: AGSFeatureQueryResult?, error: Error?) in
var strReturn = ""
if error != nil {
print("Error in function")
} else if let features = result?.featureEnumerator().allObjects {
for feature in features {
strReturn += "\(feature.attributes["Label1"]!); "
print("For string: \(strReturn)")
}
}
completion(strReturn)
})
}
// Call like this, and do operations on the result in the callback block…
getValueSum(geo: geometry) { allLabels in
print("Got all the labels: \(allLabels)")
}
... View more
10-02-2019
07:59 AM
|
0
|
1
|
1337
|
|
POST
|
Hi Ramesh, Some answers for you: Is there a way to execute RoueTasks in parallel? A: This should be the default behavior. Create a single AGSRouteTask, and call solve() multiple times. These operations will be run on the shared AGSOperationQueue which is by default configured to allow unlimited concurrent operations (see maxConcurrentOperationCount). Correction: We use an internal queue per host that is configured to allow as many concurrent sessions as NSURLSessionConfiguration allows (we set this to 6). This enables us to avoid triggering timeouts at the NSURLSession level if a lot of requests are sent at once. Is it possible to prioritise among the parallel RouteTasks? Is there a way to run them in separate AGSOperationQueue? A: The prioritization for parallel requests would need to be on the service side, and that behavior is not exposed. But in terms of the requests you make, they are queued up and kicked off in the order they are submitted. For some routes we only want ETAs, what should be the default params for only fetching ETAs without directions and rest of the details? A: Get the default parameters as usual, and then you should set returnDirections to false, and routeShapeType to .none. Note that defaultRouteParametersWithCompletion() caches results for a given route service, so is very fast to run once the service has been loaded (either explicitly with load() or on first use). We have created separate RouteTasks for etas and calculation of detail routes - This is not helping our case. What could be the reason? A: The NSURLSessionConfiguration per host constraint is the limiting factor here. If you create multiple RouteTasks pointing to the same URL, NSURLSession will still limit the total number of concurrent requests to that service. So from an implementation perspective, assuming you're using the World Routing Service, a single AGSRouteTask should suffice. What's important is the AGSRouteParameters you pass in when you call solve(). You could create two separate template parameters (one for ETA and one for detailed directions) and use copies of those with appropriate stops assigned. But as mentioned above, getting the default parameters is a very lightweight operation. Also, I recommend you take a moment to read this page: https://community.esri.com/community/developers/native-app-developers/arcgis-runtime-sdk-for-ios/blog/2019/01/19/threading-and-the-ios-runtime-sdk - it will give you a good idea of how the iOS Runtime handles threading (by default it will generally do what you want it to and get out of your way, performing things in the background). Does that help?
... View more
09-19-2019
12:21 PM
|
0
|
0
|
989
|
|
POST
|
Hi Devendra Khatri. That seems like a sensible way to do it. You could also have used intersects() in this case. See this page, and in particular look at each relational operator at the bottom of that page. There are some good diagrams and discussions there.
... View more
09-18-2019
12:57 PM
|
1
|
0
|
920
|
|
POST
|
For those that are interested, this question was about dragging a selection rectangle that's always aligned with the screen, regardless of the rotation of the map. The suggested solution was to use the AGSGeoViewTouchDelegate methods that deal with drag interactions. Implement didTouchDownAt() and call the completion handler with true. This tells Runtime you want to handle interactions for a bit. The screenPoint will be the fixed corner of a selection rectangle. Handle didTouchDragToScreenPoint(). This will give you the opposite corner of the rectangle. From the original screen coordinate and the screen coordinate passed in here, you can define the 4 screen coordinates of the rectangle (it's aligned with the screen). Use AGSMapView.screenToLocation() to turn those into map coordinates of a polygon to display as an AGSGraphic on the map view. On didTouchUpAt(), perform the selection. Once this method returns, Runtime will resume handling map interactions.
... View more
09-17-2019
02:57 PM
|
0
|
0
|
1954
|
|
POST
|
I would recommend the generate geodatabase of those two (the manual cache is meant for in-memory control of features in a given session. You would likely run into problems serializing and deserializing that). If your data is read-only on the client, and if it doesn't change very often, generating a geodatabase once and distributing that to your clients could be the best way. We have many customers who do this. And for read-only data (i.e. your Runtime app will not be editing it - you can of course edit the data stored in the service), this can be done with the free Lite license. Also the geodatabase does not expire. Also note that there is a preplanned workflow for taking the entire map offline if that helps. It depends a lot on the nature of your data, but the preplanned workflow allows you to schedule your data packaging and there is an ArcGIS Online user interface for managing this.
... View more
09-17-2019
02:27 PM
|
1
|
3
|
2265
|
|
POST
|
Hi. In the old JSON, you had a map with a featureCollection in it. That is a specific type of FeatureLayer which is, essentially, an in-memory feature layer. When the WebMap is serialized to JSON, you'll see the features included. In your new JSON, your map is pointing to a feature service. The JSON represents the connection to the service, and the content is obtained by the Runtime as needed as you pan around the map. However, it's not serialized. You should see the same JSON for 100.5 and 100.6 in each case. It looks like you're using a different map in the two cases. Let me know if this helps.
... View more
09-17-2019
02:09 PM
|
1
|
5
|
2265
|
|
POST
|
Hi Jai. We just got this moved to the right place. Sorry we didn't see the question sooner. You should use the AGSGeometryEngine.offset() method. I used: let newPolygon = AGSGeometryEngine.offsetGeometry(geom, distance: -50,
offsetType: .squared,
bevelRatio: 1,
flattenError: 0) as? AGSPolygon and got the following result (the cyan polygon was the original input): See the documentation to understand why the distance is -ve in this case. Hope this helps!
... View more
09-17-2019
01:56 PM
|
0
|
0
|
1034
|
|
POST
|
Hi Richard Daniels, Your distributor is correct. Deployment pack sizes are: Basic: 50 Standard: 25 Advanced: 5 Analysis Extension: 5 Cheers, Nick.
... View more
09-13-2019
04:39 PM
|
0
|
0
|
7052
|
|
POST
|
Hi Devendra Khatri, Could you ask the Android question over here please? ArcGIS Runtime SDK for Android And one more thing to bear in mind: please familiarize yourself with the support levels for the various versions of Runtime SDK. 100.2.1 will enter in Mature Support in November this year. At that point we will not provide any hot fixes or patches should you encounter issues, and you should be actively planning to update to a more recent version. Cheers, Nick.
... View more
09-11-2019
12:48 PM
|
1
|
0
|
1818
|
|
BLOG
|
Hi Michael. We should have AR components released in the next 2-3 weeks. Let us know how your project goes! WRT Metal support: It would be unfair of me to identify a release for it publicly at this point, but it's still going well and coming soon. Sorry I can't be more specific right now. Cheers, Nick.
... View more
09-10-2019
10:18 AM
|
0
|
0
|
1733
|
|
POST
|
Hi. 100.2.1 framework size is too large and takes time to build IPA. What you're probably seeing is the size of the unthinned/unsliced app (which includes a few architectures). Once thinned you should see similar sizes for various versions of the SDK. See iOS ArcGIS.framework too large, hence large .ipa size - Stack Overflow for some more info. And you shouldn't go by the size of the SDK download as that includes binaries for a large range of architectures. The SDK download got smaller recently when we were able to dispense with 32-bit architectures, and when we switched to dynamic framework only (both in line with Apple's recommendations), but that's separate from how much larger that makes your final thinned IPA. Yes, we add features with each release of the SDK, so you may find some missing in 100.2. Additionally, we have fixed many bugs since then. Can I ask why you need to support iOS 9 and 10? As per Apple's own stats, 95% of all iOS devices (97% of all devices introduced in the last 4 years) are using iOS 11 or 12: https://developer.apple.com/support/app-store/ Cheers, Nick
... View more
09-09-2019
09:09 AM
|
0
|
2
|
1818
|
|
BLOG
|
Hi Manasa, We're working on updating the Samples app. One of the upcoming samples is a Navigation API sample. And there is this guide topic: Navigate a route—ArcGIS Runtime SDK for iOS | ArcGIS for Developers Hope this helps. Cheers, Nick.
... View more
09-02-2019
11:50 AM
|
0
|
0
|
1733
|
|
POST
|
The license key is not constructed from clientId or secret. Instead, for the Lite key, you can find it in your dashboard: https://developers.arcgis.com/dashboard If you need to embed other levels of key (Basic, Standard or Advanced), you should buy a license pack. Hope this helps! Nick.
... View more
08-29-2019
11:50 AM
|
0
|
0
|
1465
|
|
POST
|
Interesting. Let me pass that on to the Explorer team to confirm versions. We had a bug like that where the rendering pipeline would hang under certain conditions though it was fixed.
... View more
08-28-2019
02:04 PM
|
0
|
1
|
3082
|
| 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 |