Show callout bubble without user interaction - iphone

How to show callout bubble without the user tapping on the pin ??

(Assuming you're talking about annotations on MKMapView)
Call [mapView selectAnnotation:yourAnnotation animated:YES]; with your annotation object

It can be done as Vladimir said, but I think you need to do it after the MKAnnotationView related to your annotation is shown.
You can use the method below (which is a method defined in MKMapViewDelegate) to get informed when an annotation view is added to your MKMapView:
-(void) mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
So, basically you need to invoke the method mentioned by Vladimir
[mapView selectAnnotation:yourAnnotation animated:YES];
in the implementation of the delegate method I mentioned above

Related

in mkmapview didSelectAnnotationView use can only touch a custom marker once, how to clear

I have custom markers in a map view. When the user touches one the app moves to another page. If the user returns to the map and touches the same item again
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
is not called until you touch somewhere in the map and then touch the marker again.
I tried deselecting the annotation view but the docs say not too, and in any case it didn't work.
Any ideas on how to fix this?
Instead of setting view.selected directly which the documentation says not to do, call the deselectAnnotation:animated: method instead:
[mapView deselectAnnotation:view.annotation animated:YES];
By the way, for the reverse, there's the selectAnnotation:animated: method.
Try using a UITapGestureRecognizer to recognize taps on the annotation view.

I need a dead simple implementation of MKCircle overlay

I have a small map on my view that I want to drop an MKCircle overlay onto. I have all the coords and radius as I am creating regions for monitoring. I would like to display this region back to the user so they will know what the boundaries are.
For the life of me, there isn't one good tutorial on the internet that will give me just the bare necessities to drop a circle onto my map and be done.
As a precursor... I have used Apple's examples with no luck. The Regions example is supposed to be the one need, but all I can get it to do is drop the pin, no circle. I even copied their classes directly into my project... no joy. So if you can either point me to a good example or layout exactly what needs to be implemented in a simple ViewController, I would be very grateful.
My guess for why using the sample code didn’t work: you didn’t hook up your view controller as the map view’s delegate. First step for doing that is making sure the controller implements the MKMapViewDelegate protocol, like this (in its header file):
#import <MapKit/MapKit.h>
#interface MyViewController : UIViewController <MKMapViewDelegate>
If you’re setting up the view controller from a XIB, Ctrl-drag from the map view to your controller instance and connect it as the map view’s delegate outlet. If you’re setting it up in code, then call theMapView.delegate = self; in your -loadView or -viewDidLoad.
Then, at some point (in your -viewDidLoad, for instance),
[theMapView addOverlay:[MKCircle circleWithCenterCoordinate:someCoordinate radius:someRadius]];
…will result in the map view calling its delegate’s -mapView:viewForOverlay: method, which you can implement something like this:
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKCircleView *circleView = [[MKCircleView alloc] initWithCircle:(MKCircle *)overlay];
circleView.fillColor = [UIColor blueColor];
return [circleView autorelease];
}
It's
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <
MKOverlay>)overlay
for the full delegate method, see a complete answer for people completely lost like myself.

How do I show multiple MKAnnotations with the callout?

I want to add multiple MKAnnotations with the callout showing. I searched a few different threads on S.O and could not find a way to do it. Has anyone figured out how to add multiple pins with the callout visible?
Ok!
You should use [mapView selectAnnotation:currentAnnotation animated:FALSE]
But be sure to place this in the - (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
delegate method
Trigger MKAnnotationView callout

Show callout when tapping overlay

I have an MKMapView with several overlays. Works all just fine, and it's incredible how simple it works. There is, however, one thing I can't get to work. The idea is simple: when a user taps within the area that is covered by an overlay, a callout with some information about that overlay has to come up. The overlays are all MKPolygons, which follow the MKOverlay protocol and therefore the MKAnnotation protocol.
The MKOverlay protocol conforms to the
MKAnnotation protocol. As a result,
all overlay objects are also
annotation objects and can be
treated as one or both in your code.
If you opt to treat an overlay object
as both, you are responsible for
managing that object in two places. If
you want to display both an overlay
view and annotation view for it, you
must implement both the
mapView:viewForOverlay: and
mapView:viewForAnnotation: methods in
your application delegate. It also
means that you must add and remove the
object from both the overlays and
annotations arrays of your map.
This comes from the Apple docs. I tried something like this:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
aView.canShowCallout = YES;
}
But that doesn't seem to work. I've tried using gesture recognizers, but I have no idea how to show a callout other than by using the canShowCallOut property...
I suppose you have to add the MKOverlays as annotations also
[self.mapView addAnnotations:myOverlays];
Then return a MKAnnotationView in (mapView:viewForAnnotation) that's not hidden, either a graphic (tap-able) or zero alpha view. Next, add a UITapGestureRecognizer for each MKOverlayView, make sure it works with the map's gestures (UIGestureRecognizerDelegate implementation for simultaneous recognition). Finally when your gesture recognizer fires do this
[self.mapView setSelectedAnnotations:[NSArray arrayWithObject:myOverlayView.overlay]];
I'm not certain that this actually triggers the callOut showing though.
Also make sure your return title and/or subtitle from your overlay object.

How to tell which MKPinAnnotation has been pressed?

i have an MKMapView and have a whole bunch of MKPinAnnotations being shown and all of them have call out feature which shows a more detail view depending on were the location is..
How can I implement a method that tells which pin has been pressed out of the group so it shows a more detail view about that location?
implement the MKMapView delegate:
- (void) mapView: (MKMapView *) mapView didSelectAnnotationView: (MKAnnotationView *) view
and you can do whatever you need in there.
But i think you are really after enabling the map callout accessory. See MapCallouts sample application http://developer.apple.com/library/ios/#samplecode/MapCallouts/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009746