How to use custom icons with mapKit framework?
ios, mapkit
Solution
You can change the annotation image by using following code,
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
if ([[annotation title] isEqualToString:@"Current Location"]) {
return nil;
}
MKAnnotationView *annView = [[MKAnnotationView alloc ] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
if ([[annotation title] isEqualToString:@"McDonald's"])
annView.image = [ UIImage imageNamed:@"mcdonalds.png" ];
else if ([[annotation title] isEqualToString:@"Apple store"])
annView.image = [ UIImage imageNamed:@"applestore.png" ];
else
annView.image = [ UIImage imageNamed:@"marker.png" ];
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[infoButton addTarget:self action:@selector(showDetailsView)
forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView = infoButton;
annView.canShowCallout = YES;
return annView;
}
where "marker.png" is your image file.
Problem
I am using the MapKit framework to load google maps on my application and I place on map 4 "simulated" places like this: ``` - (void)viewDidLoad { [super viewDidLoad]; mapView.delegate = self; mapView.showsUserLocation = YES; MKUserLocation *userLocation = mapView.userLocation; MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (userLocation.location.coordinate,500,500); [mapView setRegion:region animated:NO]; //Simulated annotations on the map CLLocationCoordinate2D poi1Coord , poi2Coord , poi3Coord , poi4Coord; //poi1 coordinates poi1Coord.latitude = 37.78754; poi1Coord.longitude = -122.40718; //poi2 coordinates poi2Coord.latitude = 37.78615; poi2Coord.longitude = -122.41040; //poi3 coordinates poi3Coord.latitude = 37.78472; poi3Coord.longitude = -122.40516; //poi4 coordinates poi4Coord.latitude = 37.78866; poi4Coord.longitude = -122.40623; MKPointAnnotation *poi1 = [[MKPointAnnotation alloc] init]; MKPointAnnotation *poi2 = [[MKPointAnnotation alloc] init]; MKPointAnnotation *poi3 = [[MKPointAnnotation alloc] init]; MKPointAnnotation *poi4 = [[MKPointAnnotation alloc] init]; poi1.coordinate = poi1Coord; poi2.coordinate = poi2Coord; poi3.coordinate = poi3Coord; poi4.coordinate = poi4Coord; poi1.title = @"McDonald's"; poi1.subtitle = @"Best burgers in town"; poi2.title = @"Apple store"; poi2.subtitle = @"Iphone on sales.."; poi3.title = @"Microsoft"; poi3.subtitle = @"Microsoft's headquarters"; poi4.title = @"Post office"; poi4.subtitle = @"You got mail!"; [mapView addAnnotation:poi1]; [mapView addAnnotation:poi2]; [mapView addAnnotation:poi3]; [mapView addAnnotation:poi4]; ``` } The code is fairly simple. What i want to do is instead of using the typical red pin on my google map , use my own images to show different places. Is there a simple/straightforward way to do that, cause I got much confused from the samples I already found.