2014-04-07 4 views
0

주석의 공개 버튼에 대한 몇 가지 다른 게시물을 읽었지만 매우 유용한 것을 찾을 수 없었습니다. 기본적으로 JSON에서 파싱 한 위치의지도에 주석을 추가하고 있습니다. 이 주석에 공개 단추를 추가하고 공개 단추를 누르면 다음 viewController에서 해당 위치의 JSON 정보를로드하려고합니다. 여기에 각 위치에 대한 주석을 표시하는 코드가 있습니다. ViewController.m주석에 공개 버튼을 추가하고 새로운보기 컨트롤러에서 정보를 엽니 다.

#import "ViewController.h" 
#import "Annotation.h" 
#import "City.h" 
@interface ViewController() 


@end 
#define getDatalURL @"http://www.club-hop.com/apptest.php" 

@implementation ViewController 
@synthesize mapView,jsonArray,citiesArray; 


- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
[self retrieveData]; 


City * cityObject; 

// load external page into UIWebView 
NSMutableArray * locations= [[NSMutableArray alloc]init]; 
CLLocationCoordinate2D location; 
Annotation * myAnn; 

for(int u=0; u<citiesArray.count;u++){ 
cityObject=[citiesArray objectAtIndex:u]; 
myAnn=[[Annotation alloc]init]; 
NSNumber *aLat= cityObject.Latitude; 
NSNumber *aLon= cityObject.Longitude; 

double lat = [aLat doubleValue]; 
double lon = [aLon doubleValue]; 

location.latitude= lat; 
location.longitude=lon; 
myAnn.coordinate = location; 
myAnn.title=cityObject.clubName; 
myAnn.subtitle=cityObject.cityName; 
[locations addObject:myAnn];} 

[self.mapView addAnnotations:locations]; 


} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 



//class methods 
-(void) retrieveData{ 
NSURL * url= [NSURL URLWithString:getDatalURL]; 
NSData * data= [NSData dataWithContentsOfURL:url]; 
jsonArray= [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

//setup cities array 
citiesArray=[[NSMutableArray alloc]init]; 

for(int i=0; i<jsonArray.count;i++){ 
    NSString * cID= [[jsonArray objectAtIndex:i] objectForKey:@"id"]; 
    NSString * cName= [[jsonArray objectAtIndex:i] objectForKey:@"cityName"]; 
    NSString * cCountry= [[jsonArray objectAtIndex:i] objectForKey:@"cityCountry"]; 
    NSString * cLine= [[jsonArray objectAtIndex:i] objectForKey:@"clubLine"]; 
    NSString * clName= [[jsonArray objectAtIndex:i] objectForKey:@"clubName"]; 
    NSNumber * cLatitude= [[jsonArray objectAtIndex:i] objectForKey:@"Latitude"]; 
    NSNumber * cLongitude= [[jsonArray objectAtIndex:i] objectForKey:@"Longitude"]; 

    [citiesArray addObject:[[City alloc]initWithCityName:cName andCityCountry:cCountry  andClubName:clName andClubLine:cLine andLatitude:cLatitude andLongitude:cLongitude andCityId:cID]]; 

} 

} 

ViewController.h

#import <UIKit/UIKit.h> 
#import <Mapkit/Mapkit.h> 

@interface ViewController : UIViewController <MKMapViewDelegate> 
@property (weak, nonatomic) IBOutlet MKMapView *mapView; 
@property (nonatomic, strong) NSMutableArray * jsonArray; 
@property (nonatomic, strong) NSMutableArray * citiesArray; 

-(void) retrieveData; 


@end 

Annotation.m

#import "Annotation.h" 

@implementation Annotation 
@synthesize coordinate,title,subtitle; 

@end 

Annotation.h

여기
#import <Foundation/Foundation.h> 
#import <Mapkit/Mapkit.h> 
@interface Annotation : NSObject 
@property(nonatomic,assign) CLLocationCoordinate2D coordinate; 
@property(nonatomic, copy) NSString * title; 
@property(nonatomic, copy) NSString * subtitle; 

@end 

답변

0

당신을 위해 도움이 될 수 있습니다 링크입니다MapCallout From apple

dowanload 소스 코드와

+0

훌륭한 다리를 확인하면 대단히 – user3492592

+0

언제나 환영 사랑 감사합니다. –