|
POST
|
Hi Brandon Land, I'm a little confused by your mention of "query task" in your question, having mentioned "identify task", but assuming you mean "identify"… There's no plan at present to bring it back, although we are investigating ways to improve identify for Map Image Services. In the meantime you could try a couple of things… If you create an instance of AGSArcGISMapImageLayer pointing at your service, you should be able to pass that to AGSMapView.identifyLayer...() to get the results you're after (for best results, you might want to hold on to an instance of the layer and explicitly load it ahead of time). I haven't tested this, but I don't think you even need to add it to the map view if calling one of the identify methods that explicitly specifies a layer. I believe you could furthermore modify the mapImageSublayers array to determine which layers are included in the identify (note there's a resetSublayers() method to set things back). An alternative might be to iterate over the sublayers and if there's a "table" property set and call queryFeatures() on each table of interest. I know that's not an ideal solution, but should work. Hope this helps. Nick.
... View more
04-18-2019
01:22 PM
|
0
|
0
|
843
|
|
POST
|
Hi Michael, I can't think of a direct way to do this yet (essentially you want a join between the Shapefile and a CSV), but it would help to understand the nature of your data. In particular, how is the CSV contents related to the shapefile records, and does the contents of the CSV change frequently or is it pretty static? Also, is the shapefile very large (i.e. do you want to operate directly against the shapefile, or could you work with an in-memory copy of it?). Depending on the data, one approach you could take would be to create an AGSFeatureCollectionTable from the result of a query against the shapefile using featureCollectionTableWithFeatureSet() (an AGSFeatureQueryResult is an AGSFeatureSet). Create an AGSFeatureCollectionLayer using that. In the layers collection, you'll see a single AGSFeatureLayer that you can set your renderer on. The AGSFeatureCollectionTable you create would essentially be an in-memory version of the shapefile data in which you could then edit the "KTNR" values based off the CSV contents without modifying the shapefile itself. Or if you prefer to merge/import some other field from the CSV to key your renderer off, you could populate the AGSFeatureCollectionTable slightly more manually using featureCollectionTableWithGeoElements:fields() copying the fields from the Shapefile (or a subset if you don't need them all), and add an additional field that the renderer will be keyed on, populating that from the CSV. Could you give us some more information on the nature of the CSV and how it relates to the Shapefile? Nick.
... View more
04-16-2019
01:49 PM
|
0
|
0
|
1598
|
|
POST
|
Hi. Unfortunately Runtime 10.2.x cannot render vector tiles. This was introduced with Runtime 100.0. With Runtime 100.0, you should work with VTPK files, either generated from ArcGIS Pro or by using the AGSExportVectorTilesTask.
... View more
04-16-2019
12:12 PM
|
2
|
0
|
1248
|
|
BLOG
|
Hi. The Samples app is built to work with the downloaded SDK, which you can get from here. You should open an issue here if you really need the app to use CocoaPods and you can't get it to work.
... View more
04-16-2019
08:22 AM
|
0
|
0
|
1354
|
|
POST
|
As it happens, we just wrote a blog post discussing this: Selection behavior changes in Runtime 100.5 At 10.2, you could set a selection symbol on the Graphics Layer or the Feature Layer, not the graphic itself. But yes, the behavior is changed at 100.x, for two primary reasons: performance, and consistency with the rest of the platform. Our "halo" approach works well as selection feedback for a GIS but I can see it's not necessarily the best UX for a custom location app. I'll bring it up with the team. If you're working with graphics overlays, one approach I've used in the past is to use a UniqueValueRenderer on a "highlighted" or "focused" attribute on the graphic. Rather than manipulating the graphics selection, you would set the attribute to "true" and let the renderer handle the rest. But that would get tricky once you started working with Feature Layers.
... View more
04-15-2019
08:15 AM
|
0
|
1
|
2639
|
|
POST
|
Note that if you're just using the AGSGraphicsOverlay's selection to track/flag certain graphics, you could set the mapView.selectionProperties.color property to UIColor.clear. However, if that's the case, I would probably keep a separate Set<AGSGraphic> variable that I used to track those graphics. Granted, you might need to do some additional logic when graphics are removed from the AGSGraphicsOverlay, and it depends on what you're trying to do, but that could be a cleaner solution.
... View more
04-10-2019
10:18 AM
|
1
|
3
|
2639
|
|
BLOG
|
The latest release of the Runtime SDK for iOS is here (see the release notes, and the general announcement over on the ArcGIS Blog), and it brings with it a slew of great new features, and some cool new internals that pave the way for even more goodness in future releases. Some highlights from the iOS perspective: We're now promoting the use of the Dynamic Framework for integrating ArcGIS Runtime SDK for iOS into your projects (and have deprecated the Static framework, which will be removed in a future release). This is Apple's preferred approach and matches what CocoaPods has been doing since Runtime 100.1. It also makes integration with the project simpler (e.g. you no longer explicitly add ArcGIS.bundle to your projects). See Configure your Xcode Project in the iOS SDK Guide. In alignment with Apple's policies and since 100.5 now requires iOS 11 or higher, support for 32-bit devices has been dropped. You shouldn't notice any change as a developer, but it means means that the SDK installer package is now much smaller to download! If you've been using custom views in an AGSCallout, the Runtime now makes use of AutoLayout to fit the view. See this release note. This is not specific to the iOS Runtime SDK, but if you work with selections in your map view, please note the new behavior we have introduced at 100.5. These changes were brought about as we prepare for significant features down the line (including Metal support). As has been mentioned before, 100.5 is the last release of the dedicated Runtime SDK for macOS. The Samples app and Toolkit have already been updated for 100.5, and the Open Source apps will be update shortly (Data Collection already has been!). We hope you enjoy the new release! Let us know what you're building with it.
... View more
04-10-2019
04:00 AM
|
1
|
4
|
2133
|
|
POST
|
You've pretty much got it, Reed Hunter I think of it this way (this is pretty loosey-goosey, but it describes things well enough): A FeatureLayer and the underlying FeatureTable are pretty tightly coupled once they've been brought to life. By brought to life, in practice I mean showing it in an AGSMapView through an AGSMap's operationalLayers (an exception may be simply loading the AGSMap with AGSLoadable which may trigger that coupling for some layers/tables to determine a spatial reference, but you'd have to be missing a basemap). Once the Map is alive, it pretty much "owns" the layer - you can't add that layer to another map at the same time (you'd have to remove it from the map's operational layers and then you should be able to use it in another AGSMap). Given that tight coupling, what you should be able to do is take a map's FeatureLayer, and call copy() on it. This should give you an instance of the feature layer that you can use in another map (this will also copy() the underlying FeatureTable so you don't break that tight coupling). It'll point at the same source data, but will be an entirely separate layer unbeholden to the "owning" map of the original layer (since the copy won't be in any operationalLayers collection). e.g. let mySafeToUseFeatureLayer = featureLayerAlreadyInAMap.copy() as! AGSFeatureLayer Safest way, to avoid these races as maps are brought to life and claim layers, would be to cherry pick the layers you want from the various maps in various MMPKs, and copy() them to add to your own map that you're compiling. Just be aware that if you're doing this with multiple visible map views at once, you may end up hitting that single underlying geodatabase data table at the same time for both map views if you're navigating them both at the same time. Should work just fine, but you might notice some performance drops as data is read. I should stress that this is not something I have delved into myself. And map projection should work pretty well. The projection engine is fast and flexible, but it is an additional performance hit if every geometry has to be projected.
... View more
03-27-2019
03:41 PM
|
0
|
0
|
4015
|
|
POST
|
An MMPK is a container for Maps. Each AGSMapView can display one Map at a time. You can open a TPK and add it to a map. If you need to show a different map in a map view, simply replace the AGSMapView.map property with the other AGSMap.
... View more
03-27-2019
03:08 PM
|
0
|
0
|
4015
|
|
POST
|
It looks like you took the authentication code from the OAuth 2 DevLab. It's hard to know where things went wrong, but I would like to dig a little deeper in case we can improve things. I know you moved on from the point where things weren't working, but if you are able to DM me an Xcode project that shows this behavior, I'd be happy to take a look. Let me know.
... View more
03-19-2019
07:36 PM
|
0
|
0
|
978
|
|
POST
|
It sounds like it. Assuming you used the Maps App as your starting point, did you follow the steps in "Register an Application" and "Configure the project"? I'm intrigued as to precisely what went wrong so that I can see if we can do better with the instructions and the error messages.
... View more
03-19-2019
08:28 AM
|
0
|
2
|
2656
|
|
POST
|
Hi Manasa. By default, the polyline will be turned into AGSLocations, with one for each point in the source polyline. Remember that if you densify a polyline, you will get the original points plus any densification results, so they might be less than maxSegmentLength apart. Once you have called AGSSimulatedLocationDataSource.setLocationsWithPolyline, the AGSSimulatedLocationDataSource.locations array will be populated with AGSLocations. These locations will be provided to the AGSLocationDisplay at 1 location per second. Each location in the locations array will initially have a velocity of -1 and a course of -1. You can modify the velocities and courses to a value >= 0 if need be. The AGSSimulatedLocationDataSource will emit a location every second. If it finds a velocity < 0, it will use 1 meter per second. If it finds a course < 0, it will calculate heading based off the direction from the previous location to the current location. For the GPX data, it looks like we ignore the timestamps on the GPX source points, and emit one location every second regardless of the timing of the original data points. That probably explains why it looks like it's running too fast.
... View more
03-18-2019
10:29 AM
|
0
|
0
|
3031
|
|
POST
|
Hi Samer Abraham. Were you able to make any progress? Was it the type of account that you were using?
... View more
03-13-2019
07:58 AM
|
0
|
4
|
2656
|
|
POST
|
I meant that you should call mapView.LocationToScreen, not write your own function. Something like… double longitude = 100.458802; //reference starting point
double latitude = 5.997545;
location = new MapPoint(longitude,latitude, SpatialReferences.Wgs84);
screenPoint = mapView.LocationToScreen(location);
Perhaps I misunderstood your question.
... View more
03-06-2019
09:34 AM
|
0
|
1
|
4842
|
| 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 |