Is it possible to create a callout that shows information for layers in the map.operationalLayers list?
Solved! Go to Solution.
>this returns all of the layers in the mapView.operationalLayers array -- not the layers at the given map-point
Yes, it currently (quartz beta2) returns results for every layer, but we plan to change that to return results for only those layers that have features at that location. For now, you will have to filter out the AGSIdentifyLayerResult that do not have any associated geoElements - that's a sign there were no features for that layer at the location
PS - For quartz beta related questions, please post to forums in the Early Adopter site
Well, I feel like I'm the only one developing with the iOS SDK right now -- kinda quiet on the forum.
There's not much in the way of examples utilizing the beta SDK, but after doing a little experimenting, I thought I might have come across a way to do this:
// respond to touch event func mapView(mapView: AGSMapView, didLongPressAtPoint screen: CGPoint, mapPoint mappoint: AGSPoint) { if self.mapView.callout.hidden { let callout = self.mapView.callout callout.title = "Location" callout.detail = String(format: "x: %.2f, y: %.2f", mappoint.x, mappoint.y) callout.accessoryButtonType = UIButtonType.DetailDisclosure callout.accessoryButtonHidden = false let completionBlock: (([AGSIdentifyLayerResult]?, NSError?) -> Void)! = { (layers, error) in if (error != nil) { callout.detail = "There are no layers where you pressed. Got error: \(error.debugDescription)\n" } else { let details = "There are \(layers?.count) layers where you pressed." print(details) for layer in layers! { print("Layer: \(layer.layerContent.name)=\(layer.layerContent.subLayerContents.count)") print("-->sublayers: \(layer.sublayerResults)") } callout.detail = details } callout.autoAdjustWidth = true callout.showCalloutAt(mappoint, screenOffset: CGPointZero, rotateOffsetWithMap: false, animated: true) } mapView.identifyLayersAtScreenPoint(screen, tolerance: 5, maximumResultsPerLayer: 2, completion: completionBlock) } else { self.mapView.callout.dismiss() } }
However, this returns all of the layers in the mapView.operationalLayers array -- not the layers at the given map-point (line 29). I might be missing something obvious in the logic, but after looking at this for two days, I'm still striking out. Any ideas/suggestions would be greatly appreciated.
>this returns all of the layers in the mapView.operationalLayers array -- not the layers at the given map-point
Yes, it currently (quartz beta2) returns results for every layer, but we plan to change that to return results for only those layers that have features at that location. For now, you will have to filter out the AGSIdentifyLayerResult that do not have any associated geoElements - that's a sign there were no features for that layer at the location
PS - For quartz beta related questions, please post to forums in the Early Adopter site