In Appdelegate.h
@class MapKitDisplayViewController;
@interface MapKitDisplayAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
MapKitDisplayViewController *viewController;
UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet MapKitDisplayViewController *viewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end
In Appdelegate.m
@synthesize window;
@synthesize viewController;
//@synthesize navigationController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// Add the view controller's view to the window and display.
//[window addSubview:viewController.view];
[self.window addSubview:navigationController.view];
[window makeKeyAndVisible];
return YES;
}
In mapkitdisplayviewcontroller.h
#import <MapKit/MapKit.h>
@class DisplayMap;
@interface MapKitDisplayViewController : UIViewController <MKMapViewDelegate> {
int g;
IBOutlet MKMapView *mapView;
NSMutableArray *arr;
NSMutableArray *arr_temp;
NSMutableArray *final_arr;
NSMutableArray *final_arr_add;
}
-(void)ButtonPressed:(id)sender;
@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@end
In mapkitdisplayviewcontroller.m
#import "DisplayMap.h"
@implementation MapKitDisplayViewController
@synthesize mapView;
- (void)viewDidLoad {
[super viewDidLoad];
g=0;
arr = [[NSMutableArray alloc]init];
arr_temp = [[NSMutableArray alloc]init];
final_arr = [[NSMutableArray alloc]init];
final_arr_add = [[NSMutableArray alloc]init];
NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]init];
[dic1 setObject:@"Germany" forKey:@"city"];
[dic1 setObject:@"51.165691" forKey:@"lat"];
[dic1 setObject:@"10.451526" forKey:@"lon"];
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc]init];
[dic2 setObject:@"Austria" forKey:@"city"];
[dic2 setObject:@"47.516231" forKey:@"lat"];
[dic2 setObject:@"14.550072" forKey:@"lon"];
NSMutableDictionary *dic3 = [[NSMutableDictionary alloc]init];
[dic3 setObject:@"Hungary" forKey:@"city"];
[dic3 setObject:@"47.162494" forKey:@"lat"];
[dic3 setObject:@"19.503304" forKey:@"lon"];
NSMutableDictionary *dic4 = [[NSMutableDictionary alloc]init];
[dic4 setObject:@"Romania" forKey:@"city"];
[dic4 setObject:@"45.943161" forKey:@"lat"];
[dic4 setObject:@"24.96676" forKey:@"lon"];
[final_arr addObject:dic1];
[final_arr addObject:dic2];
[final_arr addObject:dic3];
[final_arr addObject:dic4];
[arr addObject:@"Germany"];
[arr addObject:@"Austria"];
[arr addObject:@"Hungary"];
[arr addObject:@"Romania"];
[mapView setMapType:MKMapTypeStandard];
[mapView setZoomEnabled:YES];
[mapView setScrollEnabled:YES];
MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
region.center.latitude = 51.165691 ;
region.center.longitude = 10.451526;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[mapView setRegion:region animated:YES];
[mapView setDelegate:self];
DisplayMap *ann = [[DisplayMap alloc] init];
ann.title = @"Germany";
ann.subtitle = @"";
ann.coordinate = region.center;
[mapView addAnnotation:ann];
MKCoordinateRegion region1 = { {0.0, 0.0 }, { 0.0, 0.0 } };
region1.center.latitude = 47.516231 ;
region1.center.longitude = 14.550072;
region1.span.longitudeDelta = 0.01f;
region1.span.latitudeDelta = 0.01f;
DisplayMap *ann1 = [[DisplayMap alloc] init];
ann1.title = @"Austria";
ann1.subtitle = @"";
ann1.coordinate = region1.center;
[mapView addAnnotation:ann1];
MKCoordinateRegion region2 = { {0.0, 0.0 }, { 0.0, 0.0 } };
region2.center.latitude = 47.162494 ;
region2.center.longitude = 19.503304;
region2.span.longitudeDelta = 0.01f;
DisplayMap *ann2 = [[DisplayMap alloc] init];
ann2.title = @"Hungary";
ann2.subtitle = @"";
ann2.coordinate = region2.center;
MKCoordinateRegion region3 = { {0.0, 0.0 }, { 0.0, 0.0 } };
region3.center.latitude = 45.943161 ;
region3.center.longitude = 24.96676;
region3.span.longitudeDelta = 0.01f;
region3.span.latitudeDelta = 0.01f;
[mapView addAnnotation:ann2];
region2.span.latitudeDelta = 0.01f;
DisplayMap *ann3 = [[DisplayMap alloc] init];
ann3.title = @"Romania";
ann3.subtitle = @"";
ann3.coordinate = region3.center;
[mapView addAnnotation:ann3];
CLLocationCoordinate2D mapCoords[4];
mapCoords[0].latitude = 51.165691;
mapCoords[0].longitude = 10.451526;
mapCoords[1].latitude = 47.516231;
mapCoords[1].longitude = 14.550072;
mapCoords[2].latitude = 47.162494;
mapCoords[2].longitude = 19.503304;
mapCoords[3].latitude = 45.943161;
mapCoords[3].longitude = 24.96676;
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:mapCoords count:4];
[self.mapView insertOverlay:polyLine atIndex:0];}
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = nil;
if(annotation != mapView.userLocation)
{
static NSString *defaultPinID = @"com.invasivecode.pin";
pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( pinView == nil )
pinView = [[[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
pinView.pinColor = MKPinAnnotationColorRed;
pinView.canShowCallout = YES;
pinView.animatesDrop = YES;
NSString *pintitle=[NSString stringWithFormat:@"%@",((MKPinAnnotationView*) pinView).annotation.title];
if (![arr_temp containsObject:pintitle]) {
[arr_temp addObject:pintitle];
for(NSString*str in [final_arr valueForKey:@"city"]) {
if ([pintitle isEqualToString:str]) {
[final_arr_add addObject:[final_arr objectAtIndex:g]];
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeCustom];
[infoButton setFrame:CGRectMake(pinView.bounds.size.width-35,10,25, 27)];
[infoButton setImage:[UIImage imageNamed:@"DDOrange.png"] forState:UIControlStateNormal];
pinView.rightCalloutAccessoryView = infoButton;
infoButton.tag = g;
g++;
[infoButton addTarget:self action:@selector(ButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
}
}
}
}
else {
[mapView.userLocation setTitle:@"I am here"];
}
return pinView;
}
-(void)ButtonPressed:(id)sender
{
UIButton *btn = (UIButton*)sender;
NSLog(@"%d",btn.tag);
NSLog(@"%@",[arr objectAtIndex:btn.tag]);
mapdetail *obj_mapDetail = [[mapdetail alloc]init];
[obj_mapDetail setArray:[final_arr_add objectAtIndex:btn.tag]];
[self.navigationController pushViewController:obj_mapDetail animated:YES];
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKPolylineView *overlayView = nil;
if (nil == overlayView) {
overlayView = [[[MKPolylineView alloc] initWithOverlay:overlay] autorelease];
overlayView.strokeColor = [UIColor blueColor];
overlayView.lineWidth = 5.0;
}
return overlayView;
}
In mapdetail.h
@interface mapdetail : UIViewController {
NSMutableArray *myArr;
}
-(void)setArray:(NSMutableArray*)arr;
@end
IN mapdetail.m
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@",myArr);
}
-(void)setArray:(NSMutableArray*)arr
{
myArr = arr;
}
??