POST
|
Thank you for your question! Creating a pulsing marker similar to the "current location" marker is pretty similar to the method outlined here: Make a pulse animation in AGSPictureGraphics You would create a symbol using a picture marker symbol which is a blue circle, then set up a timer to vary the size. Here's an example using a two simple marker symbol combined into an `AGSCompositeSymbol`; the size of the blue circle is changed when the timer fires: A rough outline of the code: var symbolToPulse:AGSSimpleMarkerSymbol! ... symbolToPulse = AGSSimpleMarkerSymbol(style: .circle, color: .blue, size: 18.0) let sms2 = AGSSimpleMarkerSymbol(style: .circle, color: .red, size: 12.0) let compositeSym = AGSCompositeSymbol(symbols: [symbolToPulse, sms2]) pulser = AGSGraphic(geometry: mapPoint, symbol: compositeSym, attributes: nil) ... timer = Timer.scheduledTimer(timeInterval: 0.1, target:self, selector: #selector(updateSize), userInfo: nil, repeats: true) ... let startSize: CGFloat = 18.0 let endsize: CGFloat = 36.0 ... func updateSize() { var size = symbolToPulse.size + 1.0 if size > endsize { size = startSize } symbolToPulse.size = size } Hope that helps!
... View more
08-17-2017
11:58 AM
|
3
|
0
|
926
|
POST
|
Oliver, I was able to reproduce, at least in part, the memory issues you are having. I created a map with 20 `AGSArcGISMapImageLayer`s and displayed that in a mapView inside a UIViewController. I ran the test with the v100.1 SDK in both the simulator and on an iPad Air. The base memory usage was close to 300MB on the device. After panning and zooming, the memory increased until the app crashed with an out-of-memory error. It also crashed in the simulator, but only after consuming much more memory (as expected in the simulator). I did NOT see any issue with memory failing to be released after closing the view controller. In my test, I was replacing the map containing the 20 layers with a simple map: self.mapView.map = AGSMap() Since I was no longer holding onto the map with many layers nor any of the individual layers, those objects were released and the memory was freed. I am still exploring options for you to potentially reduce the memory footprint of your map, either through settings on the `AGSArcGISMapImageLayer` or on the service(s) themselves. When I have more information, I'll send it your way. As for the memory not being released when you close the view controller, I'd suggest making sure that any reference to the view controller, the map view, and especially the maps and layers are released. In the typical app, where a view controller has a map view, which contains a map with layers, if any one of those, from the VC on down, doesn't get released, then nothing below that in the chain will be released either. I'm more than happy to look at any code or snippets you are able to share to help debug your issue. Mark
... View more
08-17-2017
09:16 AM
|
0
|
0
|
1075
|
POST
|
Oliver, thanks for the updated information. I will attempt to reproduce the problem here, using a bunch of AGSArcGISMapImageLayers. I'll keep you posted... Mark
... View more
08-14-2017
11:59 AM
|
0
|
0
|
1075
|
POST
|
Thank you for your question! A couple of things about what you reported: The AGSArcGISMapImageLayer represents a dynamic map service, so there are no real "tiles" that get loaded. What does get downloaded are the images generated by the service on the fly. Those images are cached, but the caching is handled by iOS which provides a relatively small cache "space" for those, so I don't think that is the problem. What device (or simulator) are you running the app on when you experience the crash? Is it possible to share the map? If so, I can try it and diagnose the problem here. Also, have you looked at the "Memory Report" in the "Debug Navigator" inside Xcode when the app is running to determine just how much memory is being consumed? Thanks, Mark
... View more
08-09-2017
12:20 PM
|
0
|
0
|
1075
|
POST
|
Thank you for your question! You can take a look at this document to help install the SDK with CocoPods: Install and set up—ArcGIS Runtime SDK for iOS | ArcGIS for Developers If you're installing the latest iOS Runtime SDK, you'll want to include this line in your pod file: pod 'ArcGIS-Runtime-SDK-iOS', '100.1' Let me know if that doesn't work for you. Mark
... View more
08-03-2017
11:26 AM
|
0
|
2
|
1245
|
POST
|
Thank you for your questions! Regarding the viewpointChangedHandler, the best way to be notified when map navigation starts and stops is through KVO on the "navigating" property of AGSMapView. You can use the viewpointChangedHandler, but that will get called multiple times during a map navigation animation. To know when the navigation stops, use KVO: // create a private context for KVO (outside he class implementation) private var myContext = 0 // add an observer for the mapView.navigating property: mapView.addObserver(self, forKeyPath: "navigating", options: .new, context: &myContext) ... // "observe" the navigation value. This will get called whenever the map starts/stops navigating override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if context == &myContext { if keyPath == "navigating" { print("navigation: \(mapView.isNavigating ? "Started" : "Stopped")") } } else { super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) } } As for your app size question, there are a few reasons why the SDK is much bigger at v100.0 than at 10.2.5. Part of the reason is that there is just more code, which results in a larger SDK. The main reason, however, is that we've enabled "bitcode" when compiling/building the SDK. This results in a 3-4x larger size for the SDK. That size increase will eventually get trimmed out when downloading from the App Store. You can take a look at this Apple Documentation, which contains information on how to get files sizes for thinned apps. Exporting Your App for Testing (iOS, tvOS, watchOS) And finally, we fully support iOS versions 9.x and 10.x. Mark
... View more
08-03-2017
11:08 AM
|
3
|
0
|
697
|
POST
|
Thank you for your question. Using the AGSClosestFaciltyTask is very similar to the other task-based APIs, such as the AGSRouteTask (routing) or the AGSLocatorTask (geocoding). Samples for those can be found in the ArcGIS Runtime Samples app for iOS: GitHub - Esri/arcgis-runtime-samples-ios: Swift samples demonstrating various capabilities of ArcGIS Runtime SDK for iOS Specifically, for routing: arcgis-runtime-samples-ios/FindRouteViewController.swift at master · Esri/arcgis-runtime-samples-ios · GitHub And for geocoding: arcgis-runtime-samples-ios/FindAddressViewController.swift at master · Esri/arcgis-runtime-samples-ios · GitHub If those don't help, please post the code you're having problems with and I'll take a look. Cheers, Mark
... View more
08-03-2017
10:37 AM
|
0
|
0
|
299
|
POST
|
I don't see it in your code above, but make sure you are adding the graphics overlay to the map view: self.mapView.graphicsOverlays.add(aPNsGraphicsLayer) Also, double check that the map is loaded when you're adding the layer; if it's not loaded yet, the extent may be off.
... View more
08-03-2017
09:37 AM
|
1
|
0
|
529
|
POST
|
Alexander, No problem, that's cool with me. Glad you could use the code! Cheers, Mark
... View more
07-20-2017
08:19 AM
|
1
|
0
|
1021
|
POST
|
Thank you for your question. There is no current way to get the magnifier to show when adding a new vertex. However, if you tap to add a new vertex, then tap and hold on the new vertex, the magnifier will show and you can reposition the vertex. Adding a new vertex using the magnifier is something that we are considering for the next release. Currently there is no public API to get the selected vertex of a sketch. Aside from needing the selected vertex for the workaround you mention above, is there a use case for you needing to get the selected vertex? If so, that is also something we could consider. Mark
... View more
07-19-2017
09:10 AM
|
0
|
0
|
320
|
POST
|
The code to change the opacity of the graphics overlay and the size of the marker symbol will be similar on Android. I'm not familiar enough with it to say if Android has a similar timer to iOS, but I image they do. If you need more help with that, please post a question on the Runtime Android forum, here: https://community.esri.com/community/developers/native-app-developers/arcgis-runtime-sdk-for-android
... View more
07-18-2017
08:13 AM
|
1
|
2
|
1021
|
POST
|
Thank you for your question! I tried the code you posted above and it worked for me using my sample data. One thing to note is that when using the "mapView.setViewpointCenter" method, the map will only recenter itself at the given geometry. If you also want to zoom, you will need to use the "mapView.setViewpointCenter:scale:completion:" method with an appropriate scale. For example: mapView.setViewpointCenter(features[0].geometry! as! AGSPoint, scale: 10000, completion: nil) I would quickly check and make sure you're not getting any errors and at least one feature back from the query. If you're still having problems, let me know, Mark
... View more
07-13-2017
02:22 PM
|
0
|
0
|
425
|
POST
|
Thanks for your question! The FeatureLayer "definitionExpression" property is simply a SQL Where clause. So in your example, you would need to use "OR" instead of "||" for it to be valid SQL. For example: fl.definitionExpression = "Name = 'Kimi' OR Name = 'Sebastian'" So as long as your feature layer has a field named "Name" which contains features with those exact names, you should be good. Let me know if you have any problems, Mark
... View more
07-13-2017
02:04 PM
|
0
|
0
|
468
|
POST
|
Thank you for your question! A FeatureLayer has a "mode" property which specifies how the layer retrieves features from the service. It is detailed here: 10.2.5: AGSFeatureLayer Class Reference For your case, you can set the mode to "AGSFeatureLayerModeSnapshot": In Snapshot mode, the feature layer retrieves all of the features from the associated layer resource and displays them as graphics. This includes all features that satisfy the definitionExpression and defaultDefinitionExpression. Note that the number of features that are retrieved will be limited based on the ArcGIS Server's configuration (500 features by default for ArcGIS Server 9.3, and 1000 for ArcGIS Server 10). It will be less efficient, because it will retrieve all the features (up to the server limit) instead of only those needed to be displayed, as in the "OnDemand" mode, but it should allow you to get the full extent of all the features retrieved. Let me know if you have more questions, Mark
... View more
07-13-2017
01:25 PM
|
2
|
1
|
571
|
POST
|
Thank you for your question! While we don't have anything specific to "pulse" graphics in the API, you can accomplish this by setting up your own timer and changing one or more graphicsOverlay, graphics, or symbol properties when the timer fires. Below are two examples: the first one changes the opacity of the graphics overlay containing the graphic to pulse; the second one changes the size of the symbol associated with the graphic. The code to create the timer is as follows: var timer = Timer() ... timer = Timer.scheduledTimer(timeInterval: 0.02, target:self, selector: #selector(pulseGraphic), userInfo: nil, repeats: true) And the "pulseGraphic" method to adjust the overlay opacity: var opacity: Float = 0.0 var goingDown: Bool = true func pulseGraphic() { opacity = opacity + (goingDown ? -0.01 : 0.01) if opacity < 0.25 { goingDown = false } else if opacity > 1.0 { goingDown = true } else { animationGraphicsOverlay.opacity = opacity } } Hope that helps. If you have further questions, let me know. Mark
... View more
07-11-2017
09:07 AM
|
2
|
4
|
1021
|
Title | Kudos | Posted |
---|---|---|
2 | 08-19-2024 02:33 PM | |
1 | 05-31-2023 09:26 AM | |
1 | 04-19-2023 08:58 AM | |
1 | 04-07-2023 07:49 AM | |
1 | 03-29-2023 08:01 AM |
Online Status |
Offline
|
Date Last Visited |
08-21-2024
01:16 AM
|