2010-12-20 18 views
1

私はこのことについて助けが必要です。ピンを落としてください。ピンを2か所に落とす必要があります...現在の場所とイベントの場所

現在の位置....ピンドロップ....青色... イベントの場所:緯度:53.373812 ...赤色のピンで経度4.890951。

私はこのようでした:

@interface AddressAnnotation : NSObject<MKAnnotation> { 
    CLLocationCoordinate2D coordinate; 

    NSString *mTitle; 
    NSString *mSubTitle; 

// CLLocationManager *locationManager; 
// CLLocation *currentLocation; 
} 
@end 
@interface MapViewController : UIViewController <CLLocationManagerDelegate> { 

    IBOutlet MKMapView *mapView;  
    AddressAnnotation *addAnnotation; 
    NSString *address; 
    CLLocationManager *locationManager; 
    CLLocation *currentLocation; 
} 
+(MapViewController *)sharedInstance; 
-(void)start; 
-(void)stop; 
-(BOOL)locationKnown; 
@property(nonatomic,retain)CLLocation *currentLocation; 
@property(nonatomic,retain)NSString *address; 
-(CLLocationCoordinate2D) addressLocation; 
-(void)showAddress; 

@end 

//実装ファイル。

#import "MapViewController.h" 



@implementation AddressAnnotation 
@synthesize coordinate; 
//@synthesize currentLocation; 

- (NSString *)subtitle{ 
    //return @"Sub Title"; 
    return @"Event"; 
} 
- (NSString *)title{ 
    //return @"Title"; 
    return @"Location "; 
} 

-(id)initWithCoordinate:(CLLocationCoordinate2D) c{ 
    coordinate=c; 
    //NSLog(@"%f,%f",c.latitude,c.longitude); 
    return self; 
} 

@end 

@implementation MapViewController 
@synthesize address; 
@synthesize currentLocation; 

static MapViewController *sharedInstance; 

+(MapViewController *)sharedInstance{ 
    @synchronized (self) 
    { 
     if (!sharedInstance) 
      [[MapViewController alloc]init]; 
     } 
    return sharedInstance; 
} 
+(id)alloc{ 
    @synchronized(self){ 
     NSAssert(sharedInstance==nil,"Attempted to allocate a second instance of a singleton LocationController."); 
     sharedInstance = [super alloc]; 
    } 
    return sharedInstance; 
} 
-(id)init{ 
    if(self==[super init]){ 
     self.currentLocation=[[CLLocation alloc]init]; 
     locationManager=[[CLLocationManager alloc]init]; 
     locationManager.delegate=self; 
     [self start]; 
    } 
    return self; 
} 
-(void)start{ 
    NSLog(@"Start"); 
    [locationManager startUpdatingLocation]; 
} 
-(void)stop{ 
    [locationManager stopUpdatingLocation]; 
} 
-(BOOL)locationKnown{ 
    if (round(currentLocation.speed)==-1) 
     return NO; 
     else return YES; 

} 
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    if (abs([newLocation.timestamp timeIntervalSinceDate:[NSDate date]])<120){ 
     self.currentLocation=newLocation; 
    } 
} 
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 
    UIAlertView *alert; 
    alert=[[UIAlertView alloc]initWithTitle:@"Error" message:[error description] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 
     // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [email protected]"Map-View"; 
    [self addressLocation]; 
    [self showAddress]; 
    NSLog(@"address is %@",address); 

} 

-(void)showAddress{ 

    MKCoordinateRegion region; 
    MKCoordinateSpan span; 
    span.latitudeDelta=0.2; 
    span.longitudeDelta=0.2; 

    CLLocationCoordinate2D location = [self addressLocation]; 
    region.span=span; 
    region.center=location; 

    if(addAnnotation != nil) { 
     [mapView removeAnnotation:addAnnotation]; 
     [addAnnotation release]; 
     addAnnotation = nil; 
    } 

    addAnnotation = [[AddressAnnotation alloc] initWithCoordinate:location]; 
    [mapView addAnnotation:addAnnotation]; 

    [mapView setRegion:region animated:TRUE]; 
    [mapView regionThatFits:region]; 

} 


-(CLLocationCoordinate2D) addressLocation { 

    NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 

    [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

    NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]]; 
    NSArray *listItems = [locationString componentsSeparatedByString:@","]; 

    double latitude = 0.0; 
    double longitude = 0.0; 

    if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) { 
     latitude = [[listItems objectAtIndex:2] doubleValue]; 
     longitude = [[listItems objectAtIndex:3] doubleValue]; 
    } 
    else { 
     //Show error 
    } 
    CLLocationCoordinate2D location; 
    location.latitude = latitude; 
    location.longitude = longitude; 

    return location; 
} 

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{ 

    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"]; 
    annView.pinColor = MKPinAnnotationColorRed; 
    annView.animatesDrop=YES; 
    annView.canShowCallout = YES; 
    annView.calloutOffset = CGPointMake(-5, 5); 
    return annView; 
} 


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Overriden to allow any orientation. 
    return YES; 
} 


- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 


- (void)viewDidUnload { 
    [super viewDidUnload]; 

    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [address release]; 
    [super dealloc]; 
} 


@end 

... adavanceで

おかげで私を助けてください。

答えて

0

ユーザーの現在地を表示するのは簡単です。あなたのviewForAnnotation委任

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
if (annotation == mapView.userLocation) 
{ 
    // This code will execute when the current location is called. 
    return nil; 
} 
else 
{ 
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"]; 
    annView.pinColor = MKPinAnnotationColorRed; 
    annView.animatesDrop=YES; 
    annView.canShowCallout = YES; 
    annView.calloutOffset = CGPointMake(-5, 5); 
    return annView; 
} 
+0

条件iは異なる色で私の現在の場所については、他のピンのためにコールする必要がある場合には、その作業の先生........ MKPinAnnotationView * annView =で

-(void)start{ NSLog(@"Start"); mapView.showsUserLocation=YES; //This will show the current location as blue dot in your mapview [locationManager startUpdatingLocation]; } -(void)stop{ mapView.showsUserLocation=NO; [locationManager stopUpdatingLocation]; } 

[[MKPinAnnotationView alloc] initWithAnnotation:注釈reuseIdentifier:@ "currentloc"]; annView.pinColor = MKPinAnnotationColorGreen; annView.animatesDrop = YES; annView.canShowCallout = YES; annView.calloutOffset = CGPointMake(-5、5); return annView; –

+0

それはそれが私のiphoneデバイス –

+0

はい持っていないので、サー...働いているそれら。それはデバイス上で動作します。 – iPrabu

関連する問題