Blurry Callouts

2481
7
06-27-2012 06:05 AM
GrzegorzChlodzinski
New Contributor
Hello,

I have encountered problem with callouts - content displayed inside callout blurred.

I am providing a custom view by implementing the following delegate method:
-(UIView*)customViewForGraphic:(AGSGraphic *)graphic screenPoint:(CGPoint)screen mapPoint:(AGSPoint *)mapPoint;

that returns a table embedded inside navigation controller. The content displayed that way is blurred.

I have additionally noticed that that the undesired blur effect depends on zoom level of the map. I am attaching 2 screenshot taken with slightly different zoom levels.
Please note that one first image is blurry while second is sharp. I took these 2 screenshots by opening callout at different zoom levels. One could also observe this behavior
when playing with zoom level while callout is visible.

I have observed this behavior both using 2.2.1 and 2.3 SDK.
Please advise if there any way of removing that effect or if this is SDK problem that can be fixed in the next release.
0 Kudos
7 Replies
GrzegorzChlodzinski
New Contributor
Hello,

Is there anyone having similar issue to mine?
Is there any walk around to this problem?
Could someone from the ArcGIS for iOS development team look at this problem?

Thanks!
Grzegorz
0 Kudos
by Anonymous User
Not applicable
Original User: technobrat

Hi,

Do you see this on the actual device? Simulator? Both?
If device, which device are you using?

It would make it much easier to troubleshoot if you could upload your project.

Thanks
0 Kudos
GrzegorzChlodzinski
New Contributor
I have observed it using both Simulator and iPad 1 & 2. On iPad retina it work fine.
I am attaching slightly modified IdentifyTask demo project (from ArcGIS developer samples) that illustrates my issue.
When you run this project tap on Texas state to observe blurry effect.
While having callout shown zoom in or out slightly to change blur level on the table. I have attached 2 screenshots from the sample application I am attaching.
0 Kudos
GrzegorzChlodzinski
New Contributor
Is there any progress in investigating the issue?
When I could expect ANY information?
0 Kudos
by Anonymous User
Not applicable
Original User: JRR

A possible workaround - if your app is iPad only.

Instead of showing the table in a callout, you could show your table in a UIPopoverController. You would just need to translate the map coordinate to screen coordinate, build a small CGRect around it, and call presentPopoverFromRect. Example:

MyTableViewController* vc = [[MyTableViewController alloc] init];
// Do whatever to initialize the table view with data

UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:vc];
UIPopoverController *pc = [[UIPopoverController alloc] initWithContentViewController:nc];
pc.delegate = self;
            
CGPoint screen = [self.mapView toScreenPoint:mappoint];
[self.parcelPopover presentPopoverFromRect:CGRectMake(screen.x-1, screen.y-1, 2, 2)
                                                    inView:self.mapView
                          permittedArrowDirections:UIPopoverArrowDirectionAny
                                                animated:YES];


I am doing this in one of my projects and it works well.
0 Kudos
DiveshGoyal
Esri Regular Contributor
Thanks for providing the test case.

I can't repro the problem. I've tried both on the simulator and on iPad 2 (running iOS 5).

Yet, the screenshots you provided are very compelling. Don't quite know why you're seeing this behavior.
0 Kudos
by Anonymous User
Not applicable
Original User: gchlodzinski

A possible workaround - if your app is iPad only.

Instead of showing the table in a callout, you could show your table in a UIPopoverController. You would just need to translate the map coordinate to screen coordinate, build a small CGRect around it, and call presentPopoverFromRect. Example:

MyTableViewController* vc = [[MyTableViewController alloc] init];
// Do whatever to initialize the table view with data

UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:vc];
UIPopoverController *pc = [[UIPopoverController alloc] initWithContentViewController:nc];
pc.delegate = self;
            
CGPoint screen = [self.mapView toScreenPoint:mappoint];
[self.parcelPopover presentPopoverFromRect:CGRectMake(screen.x-1, screen.y-1, 2, 2)
                                                    inView:self.mapView
                          permittedArrowDirections:UIPopoverArrowDirectionAny
                                                animated:YES];


I am doing this in one of my projects and it works well.


Thanks for the suggestion. I am using callouts infrastructure since it does not disappear when you tap outside of it - you can pan and zoom map while having it open.
Actually I was using popovers before switching to callout in a similar way you have described. Callouts makes my application easier to use.
0 Kudos