|
POST
|
Jake, Sorry to hear you're having problems. Can you give me any additional information about the crash, such as: - does it happen with a mapView or SceneView (or both)? - does it happen during any particular operation/task/user input? - is there any particular layers/maps/scenes/basemap/data that causes it to happen more often or not? - any particular device (example: iPhone 6 or 7s or iPad)? - any particular iOS version? The method in question is called when there are changes to the map/scene that would require updating the attribution text; things such as adding/removing layers, changing base map layers, and just updating the visible area of the map/scene (as different data may become visible/hidden). Mark
... View more
03-20-2018
10:02 AM
|
0
|
11
|
1557
|
|
POST
|
Shimin, Thank you for your question! Yes, there is an equivalent to those classes in the 100.x releases. It is the AGSLayerContent protocol, which all layer classes implement, since the base class AGSLayer implements it. It will have everything you need to construct a TOC. The documentation for AGSLayerContent can be found here: ArcGIS Runtime SDK for iOS: Protocol Reference We have not yet provided a TOC sample or Toolkit component, but there is a Legend Toolkit component. The legend will loop through all of the map/scene's operational layers, recursively going through all sublayers to build the legend. The methodology in there will be very similar to that of a TOC. You can find it here: GitHub - Esri/arcgis-runtime-toolkit-ios: Toolkit components that will simplify your iOS app development with ArcGIS Run… The source code is provided and can be found in that GitHub repo here: arcgis-runtime-toolkit-ios/LegendViewController.swift at master · Esri/arcgis-runtime-toolkit-ios · GitHub Let us know if you need more help or have any other questions, Mark
... View more
03-20-2018
08:35 AM
|
0
|
0
|
1078
|
|
POST
|
I did some more digging on my end and found out that the sublayer content and legendInfo are not populated for layers created from a tile cache. This is something that is under consideration for the next release. So you are initializing the tiled layer correctly, especially since it is drawing successfully, it's just that the legend info functionality is not yet implemented. Please let us know if you have more questions, Mark
... View more
02-27-2018
08:27 AM
|
0
|
0
|
925
|
|
POST
|
Next week is the Esri Developer Summit in Palm Springs. Is anyone here attending? I will be there from Monday - Thursday, presenting at one Technical Session and one Demo Theater session. I will also be at the ArcGIS Runtime SDK for iOS/macOS area in the Esri Showcase for much of the week, so please stop by and say hello! DevSummit 2018 – Palm Springs, CA Here are some of the iOS sessions offered; be sure to check the schedule to make sure the time/room haven't changed (Agenda | 2018 DevSummit 😞 ArcGIS Runtime SDK for iOS and macOS: Building Apps Wednesday, March 07, 10:30 am - 11:30 am- Santa Rosa The ArcGIS Runtime SDK for iOS and macOS allows you to quickly and easily build interactive mapping applications for Apple platforms. This session introduces the SDK then covers common developer workflows and capabilities you'll use to build your own applications. You'll learn about patterns and practices for building great GIS iOS and macOS apps, and the resources that are available for your success. Authentication for iOS Apps Made Easy Wednesday, March 07, 6:00 pm - 6:30 pm - Demo Theater 1: Oasis 1-2 Jump Start Your iOS App with the Toolkit Wednesday, March 07, 5:30 pm - 6:00 pm - Demo Theater 1: Oasis 1-2 The Runtime SDK provides an open source toolkit containing high-level components and utilities that simply development of common workflows. Come learn about the toolkit and how you can take advantage of it in your apps. Turbocharge Feature Display On iOS With Popups Thursday, March 08, 2:30 pm - 3:00 pm - Demo Theater 2: Oasis 1-2 Make Your iOS Apps Come Alive With Map Animations Thursday, March 08, 1:00 pm - 1:30 pm - Demo Theater 3: Oasis 1-2 Hope to see some of you there, Mark
... View more
02-26-2018
09:07 AM
|
0
|
0
|
888
|
|
POST
|
Thank you for your question! My guess is that all of the legend information is in the tiledSublayers property of layer. layer.tiledSublayers.forEach { (sublayer) in sublayer.fetchLegendInfos(completion: { (legendInfos, error) in if let error = error { print("*** Error in fetchLegendInfos for \(sublayer.name😞 \(error)"); return } //do something with the legendInfos array... }) } Note that each of the sublayers, which are AGSArcGISTiledSublayer objects, might also have a non-empty sublayers property, so you may want to check those as well if you're still not getting the information you expect. To make things easier, we do provide a Legend component and example code in our ArcGIS Runtime Toolkit for iOS here: GitHub - Esri/arcgis-runtime-toolkit-ios: Toolkit components that will simplify your iOS app development with ArcGIS Run… Let me know if you need further help! Mark
... View more
02-23-2018
02:18 PM
|
0
|
0
|
925
|
|
POST
|
Thank your for your question! All of the Identify operations have been moved to the AGSGeoView class in the 100.x release. There are several different variations of Identify method, so choose the one that works best for you. If those don't meet your needs, can you be more specific as to what the AGSIdentifyTask did that you can't do in 100.x? Thanks, Mark
... View more
02-21-2018
01:12 PM
|
0
|
0
|
693
|
|
POST
|
I'm glad you got the identify working, but I understand it's too slow. A couple of questions: which flavor of Identify are you using (there are several different Identifyxxx methods on AGSGeoView)? What base map are you using? If you are using a flavor of Identify which identifies all layers, the Identify method won't call it's completion handler until all layers have finished their identify operation. In this case, consider calling Identify only on layers that you want results for. We have noticed that Identify operations on a GeoView with an imagery base map can be very slow. We do identify all layers (including base map layers) if identify is enabled for those services. If you are using an imagery base map you should get better performance by switching to a different base map (although I understand this may not be desirable for your map). We are exploring ways to enhance the identify workflow, potentially by allowing users to specify which layers they want to perform identify on (and making one Identify call), as opposed to calling it for every layer.
... View more
02-02-2018
08:40 AM
|
0
|
1
|
2460
|
|
POST
|
The results of an identifyLayer call is an AGSIdentifyLayerResult object (or array of them, depending on which flavor of identify you called). The AGSIdentifyLayerResult object has a property, sublayerResults, which contains the identify results for the sublayers of the original layer. If you are only checking for geoElement results on the top-level AGSIdentifyLayerResult, you should check the sublayers. You said your data was architected with multiple sublayers, so my guess is the results are in one of the sublayer results. Note that the subLayerResults object is also of type AGSIdentifyLayerResult, so it might have sublayerResults as well that you will want to check. So I would continue to use AGSArcGISMapImageLayer and check for sublayer results (recursively if you have many nested layers). Let us know if that's not the case and we can explore further.
... View more
02-01-2018
11:47 AM
|
1
|
3
|
2460
|
|
POST
|
Thank you for the detailed explanation, it helps. I checked our code and we are holding onto the MapView gesture recognizers and then accessing them directly to enable/disable them, so there should be no issues with you adding your own recognizer. I will write some tests here to try to reproduce your issue and verify things are OK in our code. Mark
... View more
01-16-2018
12:38 PM
|
0
|
6
|
2347
|
|
POST
|
Bernardo, I'm glad you found a solution that works for you. The iOS Runtime SDK *does* use the information the supporting files when rendering the raster. To test that, I removed all but the "Shasta.tif" file from the samples project and re-build/re-ran the app. The Shasta tif did *not* show up for me without those files. You said you were using the "exportImage" endpoint on the image service. Take a look at the "Download Raster" endpoint here. It creates and provides links to the supporting files. However, the image service must support the "download" operation, which not all do. Hope that helps and if you have any more questions, let us know. Thanks, Mark
... View more
01-12-2018
01:11 PM
|
0
|
1
|
1149
|
|
POST
|
Thank you for your question. As you stated, there currently is no "maxEnvelope" or "maxExtent" property on either the MapView or the Map in 100.1 or the latest 100.2 release. This is something that is under discussion for a future release. I know it's not optimal, but it is possible to customize the display of the background grid to your liking. See the "backgroundGrid" property on AGSMapView. Mark
... View more
01-12-2018
12:07 PM
|
0
|
0
|
1097
|
|
POST
|
Thank you for posting the code that works for you. I'd be interested to learn more about what you are doing when the problem occurs. Internally, when the user sets the "self.interactionOptions.isEnabled" option to "false" (on the MapView) we are doing what you are doing, which is setting all the gestureRecognizers' isEnabled property to false. According to the UIGestureRecognizer's interface doc for "isEnabled": "when changed to NO the gesture recognizer will be cancelled if it's currently recognizing a gesture", which *should* prevent the problem you are seeing. If you could provide some more detail (or some sample code) that describes what's happening when you encounter the problem, I can see if there's anything we can do in the SDK. Thanks again, Mark
... View more
01-12-2018
10:06 AM
|
0
|
8
|
2347
|
|
POST
|
Yes, the selectionSymbol property has been removed, in favor of the selectionColor and selectionWidth. As a work around, one possibility to get the result you desire is to add a GraphicsOverlay to the map to handle the selection. When the user selects a feature, a graphic is added to the overlay with the same geometry as the selected feature and a custom symbol. Clearing the "selection" is just a matter of removing the graphic from the overlay. // create the overlay let selectionOverlay = AGSGraphicsOverlay() //add the overlay to a mapView mapView.graphicsOverlays.add(selectionOverlay) //In the selection code (in my case it's the geoView.identifyLayers completion handler) //create your custom symbol let symbol = AGSSimpleMarkerSymbol(style: .circle, color: .red, size: 12.0) //"unselect" all features self?.selectionOverlay.graphics.removeAllObjects() //loop through selected geoElements for geoElement in geoElements { //create the graphic with the geoElement's geometry and our selection symbol let graphic = AGSGraphic(geometry: geoElement.geometry, symbol: symbol, attributes: nil) //add the graphic to our selection overlay self?.selectionOverlay.graphics.add(graphic) } Let me know how this works for you. Mark
... View more
12-01-2017
11:45 AM
|
0
|
1
|
875
|
|
POST
|
Thank you for your question! With the current API, you are able to create a thick border around a feature. Here's the same symbol, one unselected and one selected with the selectionColor = .black and the selectionWidth = 2.0. If that's not what you need, what selection effect are you looking for? Thank you, Mark
... View more
11-30-2017
12:27 PM
|
0
|
3
|
875
|
|
POST
|
Yes, it is OK to use a background thread to process, add and read graphics to/from an overlay. In fact, there is a performance boost to doing it that way as opposed to on the main thread.
... View more
11-30-2017
10:27 AM
|
1
|
0
|
851
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 07-30-2025 09:41 AM | |
| 2 | 11-25-2024 01:58 PM | |
| 2 | 08-19-2024 02:33 PM | |
| 1 | 05-31-2023 09:26 AM | |
| 1 | 04-19-2023 08:58 AM |
| Online Status |
Offline
|
| Date Last Visited |
08-18-2025
09:06 AM
|