2016-03-21 9 views
1

Meine Karte zeigt einen Stift an einem bestimmten Ort, aber es zeigt nicht den StiftDie Pin funktioniert nicht

Hier ist der Code

WadiRumViewControllerJordan.h

#import <UIKit/UIKit.h> 
#include <MapKit/MapKit.h> 

@interface WadiRumViewControllerJordan : UIViewController 

@property (strong, nonatomic) IBOutlet MKMapView *WadiRumMapView; 
@end 

WadiRumViewControllerJordan.m

#import "WadiRumViewControllerJordan.h" 
#import "WadiRumNSOjectPIN.h" 

@interface WadiRumViewControllerJordan() 


@end 
//Wadi Rum Coordinates 
#define WadiRum_Latitude 29.537355 
#define WidiRum_longtitude 35.415026 

//Wadi Rum Span 
#define WadiRumSpan 0.01f; 


@implementation WadiRumViewControllerJordan 
@synthesize WadiRumMapView; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //Create WadiRum Region 
    MKCoordinateRegion WadiRumRegion; 

    //Center 
    CLLocationCoordinate2D center; 
    center.latitude = WadiRum_Latitude; 
    center.longitude = WidiRum_longtitude; 

    //Span 
    MKCoordinateSpan span; 
    span.latitudeDelta = WadiRum_Latitude; 
    span.longitudeDelta = WidiRum_longtitude; 

    WadiRumRegion.center = center; 
    WadiRumRegion.span = span; 

    //Set our map 
    [WadiRumMapView setRegion:WadiRumRegion animated:YES]; 

    //WadiRumNSObjectPIN 
    //1. Create a coordinate for the use of WadiRum 
    CLLocationCoordinate2D WadiRumLocation; 
    WadiRumLocation.latitude = WadiRum_Latitude; 
    WadiRumLocation.longitude = WidiRum_longtitude; 

    WadiRumNSOjectPIN * WadiRumAnnitation = [[WadiRumNSOjectPIN alloc] init]; 
    WadiRumAnnitation.coordinate = WadiRumLocation; 
    WadiRumAnnitation.title = @"Services"; 
    WadiRumAnnitation.subtitle = @"Desert"; 



    {[self.WadiRumMapView addAnnotation:WadiRumAnnitation]; 

    } 
} 

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



@end 

WadiRumNSOjectPIN.h

#import <Foundation/Foundation.h> 
#import <MapKit/MapKit.h> 

@interface WadiRumNSOjectPIN : NSObject <MKAnnotation> 

@property(nonatomic, assign) CLLocationCoordinate2D coordinate; 
@property(nonatomic, copy) NSString * title; 
@property(nonatomic, copy) NSString * subtitle; 

@end 

WadiRumNSOjectPIN.m

#import "WadiRumNSOjectPIN.h" 

@implementation WadiRumNSOjectPIN 
@synthesize coordinate; 

- (id)initWithLocation:(CLLocationCoordinate2D)coord { 
    self = [super init]; 
    if (self) { 
     coordinate = coord; 
    } 
    return self; 
} 

@synthesize coordinate, title, subtitle; 

@end 

ich der obige Code bearbeitet zu machen, genau wie das, was ich will, habe ich diesen Fehler im Bild unten

Picture

+0

Ich bin verwirrt, "meine Karte zeigt einen Stift an einem bestimmten Ort, aber es zeigt nicht die Pin". Zeigt es also eine Nadel oder nicht? Haben Sie die Delegate-Methode implementiert, um eine MKPinAnnotationView hinzuzufügen? –

+0

@JoshHamet - Auch ohne den Delegaten anzugeben, würde er das Standardverhalten sehen, dass der Pin mit Standard-Callout-Verhalten angezeigt wird. – Rob

+0

Roa, Sie haben eine Zeile mit der Angabe '[ttNSOjectPIN alloc];'. Stellen Sie sicher, dass Sie immer 'init' aufrufen, z. '[[ttNSOjectPIN alloc] init];'. – Rob

Antwort

1

Um zu konform zu MKAnnotation, müssen Sie die Eigenschaften coordinate, title und subtitle haben. Sie haben drei zusätzliche Eigenschaften hinzugefügt: ttcoordinate, tttitle und ttsubtitle, aber MKAnnotation ignoriert diese und sucht nach coordinate, title und subtitle.

Der Hauptgrund, warum Sie Ihre Anmerkung nicht sehen, ist, dass Sie ttcoordinate in viewDidLoad einstellen. Aber MKAnnotation wird das nicht verwenden, sondern sich auf die coordinate-Eigenschaft beziehen, die Sie synthetisierten, aber nie setzen. (Sie tun, um eine initWithLocation Methode haben, was darauf hindeutet, Sie coordinate aktualisieren würden, aber man kann nie so nennen.)

Unterm Strich würde ich vorschlagen, die Umbenennung ttcoordinate, ttitle und ttsubtitle-coordinate, title und subtitle und Aktualisierung alle diese Referenzen entsprechend, und das sollte alles reparieren. Und Sie können die @synthesize Linie zurückziehen.

+0

Ich werde es jetzt versuchen, festhalten! – Roa

+0

Es gab mir diesen Fehler http://oi68.tinypic.com/ 2zjbbzb.jpg – Roa

+0

Ich habe oben bearbeitet .. :) – Roa