Mapkit Annotation delete/refresh map

soryo91soryo91 Membre
août 2012 modifié dans Objective-C, Swift, C, C++ #1
Bonjour,



Je n'arrive pas a ne pas afficher les annotations voulues quand je press un bouton :


-([color=#bb2ca2]void[/color])bouttonKfcPressed<br />
{<br />
	[color=#008400]/*[/color]<br />
[color=#008400]	 si on appui sur ce bouton,[/color][color=#008400] logiquement si j&#39;ai &lt;id&gt; annotation, [/color]<br />
[color=#008400]	 je peux donc accéder à  [annotation title][/color]<br />
[color=#008400]	 pour supprimer celui ci, je fais[/color]<br />
[color=#008400]	*/[/color]<br />
	[color=#bb2ca2]if[/color] ([[color=#d12f1b]@&quot;KFC&quot;[/color] isAqualToString:[annotation title]])<br />
		 [_mapView removeAnnotation:annotation];<br />
	[color=#008400]/*[/color]<br />
[color=#008400]     le [/color][color=#008400]problème c&#39;est que [/color][color=#008400]j&#39;enlève KFC de mes [/color][color=#008400]annotations[/color][color=#008400] mais celui ci est [/color]<br />
[color=#008400]     toujours affiché sur la map[/color] [color=#008400]et je ne vois pas comment refaire un refresh de la map [/color]<br />
[color=#008400]     sans que KFC soit affiche...[/color]<br />
[color=#008400]	 */[/color]<br />
}




N'y a t il pas un moyen de "hide" ou de remove une par une les annotations choisies (par nom), ensuite faire un refresh pour afficher les autres annotations ?



(exemple, si je push mon bouton, les KFC disparaissent, si je push le bouton une deuxième fois, ils se re-affichent)



Merci d'avance pour vos réponses.



(ps : j'utitlise mapkit + sbjson si ca peut vous être utile de savoir)

Réponses

    1. Les conditions à  la Yoda c'est pas joli. En l'occurrence ta contante "KFC" doit se trouver après le -isEqualToString: et non avant
    2. Faire un bête -isEqualToString: c'est un peu bizarre comme technique mais bon.. Ne connaissant pas le background de ton app ça passe encore. J'aurai plutôt utilisé un type permettant de les identifier, ou alors de vraies constantes du genre kMyAppFastFoodKFC = @KFC;
    3. On ne voit pas tout ton code... merci de copier l'intégralité de la méthode !
  • soryo91soryo91 Membre
    août 2012 modifié #3
    Merci pour ta réponse, c'est une methode tout bete appelée lorsque on clique sur le bouton, il n'y a donc rien de spécial a part cette condition, sinon j'ai la methode qui creer les annotations :
    [font=Menlo][size=2]-([color=#bb2ca2]BOOL[/color])bouttonKfcPressed[/size][/font]<br />
    [font=Menlo][size=2]{[/size][/font]<br />
    [color=#008400][font=Menlo][size=2][color=#000000]	[/color][color=#4F8187]_kfcClicked[/color][color=#000000] = [/color][color=#BB2CA2]TRUE[/color][color=#000000];[/color][/size][/font][/color]<br />
    [color=#4F8187][font=Menlo][size=2][color=#000000]	[/color][color=#bb2ca2]return[/color][color=#000000] [/color]_kfcClicked[color=#000000];[/color][/size][/font][/color]<br />
    [color=#4F8187][font=Menlo][size=2][color=#000000]}[/color][/size][/font][/color]<br />
    [font=Menlo][size=2]- ([color=#bb2ca2]void[/color]) makeAnnotation:([color=#703daa]MKMapView[/color] *)mapView title:([color=#703daa]NSArray[/color]*)name viewForAnnotation:([color=#bb2ca2]id[/color] &lt;[color=#703daa]MKAnnotation[/color]&gt;)annotation View:([color=#703daa]MKAnnotationView[/color] *)annView Clicked:([color=#bb2ca2]BOOL[/color])clicked[/size][/font]<br />
    [font=Menlo][size=2]{[/size][/font]<br />
    [font=Menlo][size=2]	[color=#bb2ca2]for[/color] ([color=#703daa]NSDictionary[/color] *fastfood [color=#bb2ca2]in[/color] name)[/size][/font]<br />
    [font=Menlo][size=2]	{[/size][/font]<br />
    [font=Menlo][size=2]		[color=#703daa]NSString[/color] *newString = [[color=#703daa]NSString[/color] [color=#3d1d81]stringWithFormat[/color]:[color=#d12f1b]@&quot;%@&quot;[/color], fastfood];[/size][/font]<br />
    [font=Menlo][size=2]		[color=#bb2ca2]if[/color](annotation == mapView.[color=#703daa]userLocation[/color])[/size][/font]<br />
    [font=Menlo][size=2]		{[/size][/font]<br />
    [color=#3D1D81][font=Menlo][size=2][color=#000000]			[/color][color=#703daa]UIImage[/color][color=#000000] *scaledImage = [[/color][color=#703daa]UIImage[/color][color=#000000] [/color]imageWithCGImage[color=#000000]: [[[/color][color=#703daa]UIImage[/color][color=#000000] [/color]imageNamed[color=#000000]:[/color][color=#d12f1b]@&quot;pin-location.png&quot;[/color][color=#000000]][/color]CGImage[color=#000000]] [/color]scale[color=#000000]:[/color][color=#272ad8]2.0[/color][color=#000000] [/color]orientation[color=#000000]:[/color]UIImageOrientationUp[color=#000000]];[/color][/size][/font][/color]<br />
    [font=Menlo][size=2]			annView.[color=#703daa]image[/color] = scaledImage;[/size][/font]<br />
    [font=Menlo][size=2]		}[/size][/font]<br />
    [font=Menlo][size=2]		[color=#bb2ca2]else[/color][/size][/font]<br />
    [font=Menlo][size=2]		{[/size][/font]<br />
    [font=Menlo][size=2]			newString = [[color=#bb2ca2]self[/color] [color=#31595d]transformeName[/color]:[annotation [color=#3d1d81]title[/color]]];[/size][/font]<br />
    [color=#3D1D81][font=Menlo][size=2][color=#000000]			[/color][color=#703daa]UIImage[/color][color=#000000] *scaledImage = [[/color][color=#703daa]UIImage[/color][color=#000000] [/color]imageWithCGImage[color=#000000]:[[[/color][color=#703daa]UIImage[/color][color=#000000] [/color]imageNamed[color=#000000]:[[/color][color=#703daa]NSString[/color][color=#000000] [/color]stringWithFormat[color=#000000]:[/color][color=#d12f1b]@&quot;%@%@%@&quot;[/color][color=#000000], [/color][color=#d12f1b]@&quot;Small&quot;[/color][color=#000000], newString, [/color][color=#d12f1b]@&quot;.png&quot;[/color][color=#000000]]] [/color]CGImage[color=#000000]] [/color]scale[color=#000000]:[/color][color=#272ad8]2.0[/color][color=#000000] [/color]orientation[color=#000000]:[/color]UIImageOrientationUp[color=#000000]];[/color][/size][/font][/color]<br />
    [font=Menlo][size=2]			annView.[color=#703daa]image[/color] = scaledImage;[/size][/font]<br />
    [font=Menlo][size=2]		}[/size][/font]<br />
    [font=Menlo][size=2]		[color=#bb2ca2]if[/color] (clicked == [color=#bb2ca2]YES[/color])[/size][/font]<br />
    [font=Menlo][size=2]		{[/size][/font]<br />
    [font=Menlo][size=2]			[color=#bb2ca2]if[/color] ([annotation [color=#3d1d81]title[/color]] == [color=#d12f1b]@&quot;KFC&quot;[/color])[/size][/font]<br />
    [font=Menlo][size=2]				annView.[color=#703daa]hidden[/color] = [color=#bb2ca2]YES[/color];[/size][/font]<br />
    [font=Menlo][size=2]		}[/size][/font]<br />
    [font=Menlo][size=2]	}[/size][/font]<br />
    [font=Menlo][size=2]	annView.[color=#703daa]canShowCallout[/color] = [color=#bb2ca2]YES[/color];[/size][/font]<br />
    [font=Menlo][size=2]	annView.[color=#703daa]calloutOffset[/color] = [color=#3d1d81]CGPointMake[/color](-[color=#272ad8]6.0[/color], [color=#272ad8]0.0[/color]);[/size][/font]<br />
    [font=Menlo][size=2]}[/size][/font]




    meme avec le hidden, ca ne marche pas en lancant l'application laisser charger toutes les annotations puis finir par cliquer sur le bouton, rien ne bouge..

    avez vous des pistes qui me mèneront sur le bon chemin ?
Connectez-vous ou Inscrivez-vous pour répondre.