Pins !

Bonjour !



C'est une question bête mais je n'arrive pas à  trouver la réponse.

J'aimerais afficher une carte avec des punaises déjà  placées, pour afficher toutes les boutiques disponibles. Je n'arrive pas à  savoir si il faut utiliser MKAnnotation, MKPinAnnotation ou encore un autre..



Merci.

Réponses

  • BunoBuno Membre
    Yop,

    MKAnnotation est juste un protocole.

    Tu peux utiliser tes propres classes.
  • Il faut que je crée mon annotation est que je l'ajoute avec addAnnotation ?
  • BunoBuno Membre
    Regarde ce tuto
  • SkateboardVSkateboardV Membre
    juin 2012 modifié #5
    Oui j'avais déjà  trouvé ce tuto du ChatNoir en cherchant sur ce forum ! Mais j'ai encore quelques soucis :



    Je crée une classe mesAnnotations :


    //  mesAnnotations.h<br />
    [color=#77482e]#import [/color]&lt;Foundation/Foundation.h&gt;<br />
    [color=#cf2b23][color=#77482e]#import [/color]&lt;MapKit/Mapkit.h&gt;[/color]<br />
    [color=#cf2b23][color=#77482e]#import [/color]&lt;CoreLocation/CoreLocation.h&gt;[/color]<br />
    <br />
    [color=#b92e9f]@interface[/color] mesAnnotations : [color=#7140a6]NSObject[/color] &lt;[color=#7140a6]MKAnnotation[/color]&gt;<br />
    {<br />
    [color=#7140a6][color=#000000]	[/color]CLLocationCoordinate2D[color=#000000] coordinate;[/color][/color]<br />
    	[color=#7140a6]NSString[/color] *title;<br />
    	[color=#7140a6]NSString[/color] *subtitle;<br />
    }<br />
    [color=#b92e9f]@end[/color]<br />
    [color=#b92e9f]
    
    [/color]



    //  mesAnnotations.m[/color]<br />
    <br />
    [color=#cf2b23][color=#77482e]#import [/color]&quot;mesAnnotations.h&quot;[/color]<br />
    <br />
    [color=#b92e9f]@implementation[/color] mesAnnotations<br />
    [color=#b92e9f]@synthesize[/color] coordinate;<br />
    [color=#b92e9f]@synthesize[color=#000000] title;[/color][/color]<br />
    [color=#b92e9f]@synthesize[color=#000000] subtitle;[/color][/color]<br />
    [color=#b92e9f]@end
    




    Je les ajoute ensuite à  ma vue dans le viewDidLoad :


    [color=#508186]mesAnnotations[/color] * monAnnotation=[[[color=#508186]mesAnnotations[/color] [color=#3e217e]alloc[/color]] [color=#3e217e]init[/color]];<br />
    	monAnnotation.coordinate= {[color=#2c32d3]48.86271[/color],[color=#2c32d3]2.347276[/color]};<br />
    	monAnnotation.title=[color=#cf2b23]@&quot;Exemple d&#39;annotation&quot;[/color];<br />
    	[[color=#508186]mapView[/color] [color=#3e217e]addAnnotation[/color]:monAnnotation];<br />
    	[monAnnotation [color=#3e217e]release[/color]];
    




    Seulement, la syntaxe utilisée pour rentrer les coordonnées longitude/latitude ne marche pas, et celle pour le titre non plus. Le release non plus ne fonctionne pas.



    J'ai surement oublié ou mal fait quelque chose..
  • iDevKenoiDevKeno Membre
    juin 2012 modifié #6
    Il ne te manque pas la déclaration de propriété dans ton .h? du style
    <br />
    @property (nonatomic) CLLocationCoordinate2D coordinate;<br />
    @property (nonatomic, copy) NSString *title;<br />
    @property (nonatomic, copy) NSString *subtitle;<br />
    




    sinon, il te faut créer une méthode d'initialisation



    Amicalement

    iDevKeno
  • @iDevKeno

    Ah oui effectivement, merci. Mais le problème persiste quand même..
  • iDevKenoiDevKeno Membre
    juin 2012 modifié #8
    Extrait d'un bout de mon code



    MapPoint.h
    <br />
    #import &lt;Foundation/Foundation.h&gt;<br />
    // Import Framework file necessary to MapView<br />
    #import &lt;MapKit/MapKit.h&gt;<br />
    #import &lt;CoreLocation/CoreLocation.h&gt;<br />
    @interface MapPoint : NSObject &lt;MKAnnotation&gt;<br />
    // Properties<br />
    @property (nonatomic) CLLocationCoordinate2D coordinate;<br />
    @property (nonatomic, copy) NSString *title;<br />
    // Methods<br />
    -(id)initWithCoordinate:(CLLocationCoordinate2D)coord andTitle:(NSString *)placemark;<br />
    @end<br />
    




    MapPoint.m
    <br />
    #import &quot;MapPoint.h&quot;<br />
    @implementation MapPoint<br />
    @synthesize coordinate,title;<br />
    // Init method<br />
    -(id)initWithCoordinate:(CLLocationCoordinate2D)coord andTitle:(NSString *)placemark {<br />
    	self = [super init];<br />
    	if(self &#33;= nil) {<br />
    		self.coordinate = coord;<br />
    		self.title = placemark;<br />
    	}<br />
    	return self;<br />
    }<br />
    @end<br />
    




    ensuite, dans ton UIViewController
    <br />
    	CLLocationCoordinate2D mCoord = { 46.948695,7.444621};<br />
    	MapPoint *m = [[MapPoint alloc] initWithCoordinate:mCoord andTitle:@&quot;Berne&quot;];<br />
    	[mapView addAnnotation:m];<br />
    




    J'utilise pas de subtitle, mais tu peux aisément en rajouter un.



    Amicalement

    iDevKeno
  • Encore une fois merci @iDevKeno.



    Par contre la ligne


    [color=#660066]CLLocationCoordinate2D[/color][color=#000000] mCoord [/color][color=#666600]=[/color][color=#000000] [/color][color=#666600]{[/color][color=#000000] [/color][color=#006666]46.948695[/color][color=#666600],[/color][color=#006666]7.444621[/color][color=#666600]};
    
    [/color]



    ne fonctionne toujours pas, elle me mets l'erreur suivante : Initializing 'CLLocationCoordinate2D *' with an expression of incompatible 'double';



    Tu ne l'as pas chez toi ?
  • J'ai toujours ce petit soucis alors je permets de faire un petit UP !
  • LeChatNoirLeChatNoir Membre, Modérateur
    Salut,


    <br />
    CLLocationCoordinate2D mCoord;<br />
    mCoord.latitude=46.948695;<br />
    mCoord.longitude=7.444621;<br />
    




    Nan ? image/huh.gif' class='bbc_emoticon' alt='???' />
  • AliGatorAliGator Membre, Modérateur
    [font=helvetica, arial, sans-serif] Initializing 'CLLocationCoordinate2D *' with ...[/font]
    Pourquoi l'étoile derrière le type ? C'est une struct, pas un objet Cocoa ni un pointeur, pas besoin de mettre d'étoile derrière (comme pour tous les types C atomiques genre int, double, et autres structs)
  • 'LeChatNoir' a écrit:


    Salut,


    <br />
    CLLocationCoordinate2D mCoord;<br />
    mCoord.latitude=46.948695;<br />
    mCoord.longitude=7.444621;<br />
    




    Nan ? image/huh.gif' class='bbc_emoticon' alt='???' />




    Oui j'ai trouvé finalement c'était une erreur d'étourderie.. J'suis un boulet !
  • 'AliGator' a écrit:


    Pourquoi l'étoile derrière le type ? C'est une struct, pas un objet Cocoa ni un pointeur, pas besoin de mettre d'étoile derrière (comme pour tous les types C atomiques genre int, double, et autres structs)




    Oui exactement je sais pas ce que l'étoile faisait là .. Merci les gars !

    C'est le premier forum sur lequel je tombe qui ne snob pas les noobs ça fait plaisir image/rolleyes.gif' class='bbc_emoticon' alt='::)' />
Connectez-vous ou Inscrivez-vous pour répondre.