BLOG
|
Hey Nick, Thanks for your update, as your team is already working for the upcoming Navigation API sample so I would like to suggest/request you to please add a multistop/multipoint option in the Sample app so that it would be helpful not only me but also others to get an overall idea to hands-on with Navigation API. Just to remind you of our earlier discussion regarding Apple Arabic pronunciation, I hope ESRI team has logged a bug with Apple about it, is there any further update from Apple or does it included in the 100.6 runtime will it be included in the Sample App.
... View more
09-05-2019
03:55 AM
|
0
|
0
|
538
|
BLOG
|
Hi Nicky, Is this updated in Maps App for iOS Sample, 100.6 New Navigation API Sample Implementation required to understand the flow which works with Snap to Road, Navigation API and Re-Routing Concept. Thanks Manasa
... View more
08-25-2019
02:08 AM
|
0
|
0
|
538
|
POST
|
@tej veer , Hi sorry for the delayed reply, could you please write me back what exactly you are looking for so that I can try my best to suggest you to achieve!! what you are looking out.
... View more
06-24-2019
02:12 AM
|
0
|
0
|
1085
|
POST
|
Hi Nicholas Furness Here is my code snippets to snap the Routing Result Manuever. But i am not able to assign snapped Point to the Runtime AGSLocation due to readOnly Property. @property (nullable, nonatomic, strong, readonly) AGSLocation *location For the Testing purpose What i am doing here is ! For each locationChangedHandler update i am passing device GPS location and route solve result to a separate function like below code then doing some kind of iteration to find the snapped point based on the Current GPS Location called(AGSLocation), Then adding the new snapped point to a Graphics Layer. But what i am expecting here is how can i assign this snapped point to the Runtime Location so that it will have a smooth transition instead of Jumping. Please see the attached Video how it's showing currently. Please suggest if there anything going with wrong approach. func snapedDirectionManeuverPointToRoad( routeManuevers: [AGSDirectionManeuver], deviceGPSPoint: AGSPoint) { var sortedDictionary:[Int:Double] = [:] let sortedKey: Int self.prepareDictionary = [:] // Loop through the entire route manuevers for routeManuever in 0...routeManuevers.count-1 { let maneuver = routeManuevers[routeManuever] let nearestCoord = AGSGeometryEngine.nearestCoordinate(in: maneuver.geometry!, to: deviceGPSPoint) self.prepareDictionary[routeManuever] = nearestCoord?.distance } // Keep the original value before Sorted sortedDictionary = self.prepareDictionary let sortedValue = self.prepareDictionary.values.sorted() let key = sortedDictionary.filter{$0.value == sortedValue[0]} sortedKey = key.keys.first! guard let densifyGeometry = AGSGeometryEngine.densifyGeometry(routeManuevers[sortedKey].geometry!, maxSegmentLength: 0.001) else { print("Unable to found densify result") return } // Find the nearest Vertex from the densified route point let nearestVertex = AGSGeometryEngine.nearestVertex(in: densifyGeometry, to: deviceGPSPoint) self.snapToRoad(snapedPoint: nearestVertex!.point, imageSymbol: AGSPictureMarkerSymbol(image: imageLiteral(resourceName: "Course"))) } // Snapped point to show in Routing Overlay func snapToRoad(snapedPoint:AGSPoint, imageSymbol:AGSPictureMarkerSymbol) { let graphic = AGSGraphic(geometry: snapedPoint, symbol: imageSymbol, attributes: nil) self.routeNavigationSymbolOverlay.graphics.removeAllObjects() self.routeNavigationSymbolOverlay.graphics.add(graphic) }
... View more
04-17-2019
06:36 AM
|
0
|
1
|
1085
|
BLOG
|
Please look at the attached screenshot of 100.5 version Pod Installation warnings, Should i change it explicitly inside the target "OTHER_LDFLAGS"
... View more
04-16-2019
12:55 AM
|
0
|
0
|
481
|
BLOG
|
Dear Nicholas, In the New SDK Version 100.5, does the ArcGIS.bundle PodSpec bug has been fixed , which we found before and we had a patch/temp fix for to continue at that time. PFA email. Regards, Manasa Parida
... View more
04-14-2019
01:53 AM
|
0
|
0
|
481
|
POST
|
Hi Rex Hansen. Seems like there is a new ArcGIS Runtime version 100.5 release 2 days back, is there any new Capabilities added like Navigation API introduced in this release?.
... View more
04-11-2019
01:03 AM
|
0
|
1
|
772
|
POST
|
Hi Nicholas, Just to reminding the old post, if we follow the above mentioned approach then i am bit wondering how our Custom data source (the one which we get from route task result as route information) will know the speed of the device movement because the custom data which we are injecting to AGSLocationDataSource is our route result also we are not passing any information in the custom data as speed to follow/navigate. Let's discuss into more depth, in my case if we have traffic and barriers then how we can manage those navigation movement based on the current road, how will AGSLocationDataSource will fire to invoke the locationChangedHandler to get frequent update. May be my approach is wrong to achieve or is there any other way you could suggest us to follow. One approach i tried, it is also you only suggested : I crated a GPX file using some tool from google and injected that gpx file as AGSLocationDataSource for my testing purpose in that raw file i couldn't found the speed to follow the navigation it is going like crazy, i guess its going 100+ speed. Snap to road which i am trying is using GeometryEngine Class // I am coverting my routeTask Result directionManuever entire geometry to polyline let polyline = directionManuever.geometry as? AGSPolyline // Then using those polyline to create points of each 5 meters length using densifyGeometry guard let geodeticPath = AGSGeometryEngine.densifyGeometry(self.polyLine!, maxSegmentLength: 15) else { return } // Assign the new 5 meters point to my global polyline variable , which i found from the above densifyGeometry self.polyLine = geodeticPath as? AGSPolyline // Now this polyline i am comparing with my currentlocation as buffer to snap the navigation symbol. But it doesn't help me to achieve my goal. Please have a look into my screen recorded scenario and help me out to do some out of box work.
... View more
03-07-2019
01:18 PM
|
0
|
3
|
1085
|
POST
|
Dear Nicholas, Thanks for the update. Yes, i have embedded the dynamic framework through pod which is really good. But, i have not added ArcGIS.bundle in the project hierarchy because i remember it was earlier when i was started ArcGIS but from last 4 to 5 Months i am using through pod only, also i have checked my project hierarchy there is no where i had setup ArcGIS.bundle manually rather than pod, please let me know meanwhile i am attaching few of my screen shot for more clarity.
... View more
02-22-2019
12:41 PM
|
0
|
1
|
1156
|
BLOG
|
Could you please suggest, i am implementing on this way, Suggestion should be appreciate. // Get Routing Result self.routeSolveWebServiceCall() OR / / Get Routing Result DispatchQueue.global().async { [weak self] in self?.routeSolveWebServiceCall() } Foundation import ArcGIS extension QNMapViewController { // Combined Route Solve Call for Both Distance and Time func routeSolveWebServiceCall() { // Get Distance Based Routing Result self.routeSolveForDistanceBaseWebServiceCallWithStops(stops: self.multiPointArray, successBlock: { (routingResult) in DispatchQueue.main.async { self.updateMapWithRoutingResult() self.dismissProgressFeedback() } } }, failureBlock: { (error) in DispatchQueue.main.async { self.showProgressError(errorMessage: error) self.dismissProgressFeedback() } }) // Get Time Based Routing Result self.routeSolveForTimeBaseWebServiceCallWithStops(stops: multiStops, successBlock: { (routingResult) in DispatchQueue.main.async { self.updateMapWithRoutingResult() self.dismissProgressFeedback() } } }, failureBlock: { (error) in DispatchQueue.main.async { self.showProgressError(errorMessage: error) self.dismissProgressFeedback() } }) } func routeSolveForDistanceBaseWebServiceCallWithStops(stops:[AGSStop],successBlock: @escaping (_ routeResult: AGSRoute?) -> Void, failureBlock:@escaping (_ error: String)->Void) { self.arcGIS.requestForRouteDistanceWithStops(routeStops : stops, cntr: self, successBlock: { (routingResult) in successBlock(routingResult) }, failureBlock: { (error) in failureBlock(error) }) } func routeSolveForTimeBaseWebServiceCallWithStops(stops:[AGSStop],successBlock: @escaping (_ routeResult: AGSRoute?) -> Void, failureBlock:@escaping (_ error: String)->Void) { self.arcGIS.requestForRouteTimeWithStops(routeStops: stops, cntr: self, successBlock: { (routingResult) in successBlock(routingResult) }, failureBlock: { (error) in failureBlock(error) }) } } import ArcGIS extension ArcGISServices { func requestForRouteDistanceWithStops(routeStops:[AGSStop], cntr:UIViewController, successBlock: @escaping (_ routeResult: AGSRoute?) -> Void, failureBlock:@escaping (_ error: String)->Void) { self.routeDistanceTask.defaultRouteParameters() { defaultParams, error in guard error == nil else { failureBlock((error?.localizedDescription)!) return } // To make best use of the service, we will base our request off the service's default parameters. guard let params = defaultParams else { failureBlock((error?.localizedDescription)!) return } params.setStops(routeStops) params.outputSpatialReference = QNAppSettings.spatialToQND self.routeDistanceTask.solveRoute(with: params) { result, error in guard error == nil else { failureBlock((error?.localizedDescription)!) return } guard let routeResult = result?.routes.first else { failureBlock((error?.localizedDescription)!) return } successBlock(routeResult) } } } func requestForRouteTimeWithStops(routeStops:[AGSStop], cntr:UIViewController, successBlock: @escaping (_ routeResult: AGSRoute?) -> Void, failureBlock:@escaping (_ error: String)->Void) { self.routeTimeTask.defaultRouteParameters() { defaultParams, error in guard error == nil else { failureBlock((error?.localizedDescription)!) return } // To make best use of the service, we will base our request off the service's default parameters. guard let params = defaultParams else { //cgisApp.showProgressError(errorMessage: "No default parameters available.") failureBlock((error?.localizedDescription)!) return } params.setStops(routeStops) params.outputSpatialReference = QNAppSettings.spatialToQND self.routeTimeTask.solveRoute(with: params) { result, error in guard error == nil else { failureBlock((error?.localizedDescription)!) return } guard let routeResult = result?.routes.first else { failureBlock((error?.localizedDescription)!) return } successBlock(routeResult) } } } }
... View more
02-18-2019
02:29 PM
|
0
|
0
|
385
|
POST
|
Why this lastKnown boolean value always return false, may i know the AGSLocation should inform to the location as true or false for the readonly property called lastKnown.
... View more
02-17-2019
02:46 PM
|
0
|
1
|
380
|
POST
|
Dear Team, Could you please find the attached screenshot below when i was trying to expand the Payload package after the iPa Also from the iOS SDK veriosn 100.4 printing this debug log in Xcode Console. 2019-02-18 01:29:26.034694+0300 QNavigation[293:9557] Task <08CBEE46-3B94-4932-85F6-AF36DBDA03BA>.<189> load failed with error Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLStringKey=https://services.gisqatar.org.qa/server/rest/services/Imagery/QatarSatelitte/MapServer/tile/3/263/210, NSErrorFailingURLKey=https://services.gisqatar.org.qa/server/rest/services/Imagery/QatarSatelitte/MapServer/tile/3/263/210, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <08CBEE46-3B94-4932-85F6-AF36DBDA03BA>.<189>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <08CBEE46-3B94-4932-85F6-AF36DBDA03BA>.<189>, NSLocalizedDescription=cancelled} [-999]
... View more
02-17-2019
02:33 PM
|
0
|
3
|
1753
|
POST
|
@Nicholas Furness Ignore my previous reply, i found the solution to work, thanks
... View more
01-25-2019
06:30 AM
|
0
|
0
|
9720
|
BLOG
|
Hi Nicholas Furness Suddenly i am getting an error and app closed in my Xcode console after updating the SDK version to 100.4. pod 'ArcGIS-Runtime-SDK-iOS', '100.4' here is the error details. dyld: Library not loaded: @rpath/ArcGIS.framework/ArcGIS Referenced from: /Users/manasaparida/Library/Developer/CoreSimulator/Devices/7C896FC8-43B4-410B-BF0A-6B0CB347D5FD/data/Containers/Bundle/Application/66D74621-8A56-44B6-84B3-8F56113AA039/maps-app-ios.app/maps-app-ios Reason: image not found Message from debugger: Terminated due to signal 6 Please let me know what is this issue caused by. Thanks Manas
... View more
11-07-2018
03:09 AM
|
0
|
0
|
588
|
Title | Kudos | Posted |
---|---|---|
1 | 08-16-2018 06:38 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:25 AM
|