Changer le marqueur sélectionné de Google Maps ou changer la couleur du marqueur?

Je me request s'il existe un moyen de changer la couleur ou l'image du marqueur sélectionné, puis de le changer quand il n'est plus sélectionné. Je vois que Yelp, qui utilise Apple Maps, change la couleur / l'image du marqueur sélectionné, puis revient à l'original une fois que celui-ci n'est plus sélectionné et se demandait si le SDK Google Map iOS avait quelque chose de similaire ou ce problème et trouvé une solution.

Ce que j'ai essayé:

J'ai regardé la documentation sur les marqueurs de Google ( trouvée ici ) et voir qu'ils ont marker.opacity qui change l'opacité et marker.icon = [GMSMarker markerImageWithColor:[UIColor blackColor]]; ce qui change la couleur du marqueur.

J'ai essayé de le changer manuellement dans -(UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker; en ajoutant cette ligne marker.icon = [GMSMarker markerImageWithColor: [UIColor differentColor]]; ou cette ligne marker.icon = [UIImage imageNamed:@"differentColorImage"]; mais lorsque vous appuyez sur la fenętre / info-window, l'image / la couleur rest la même.

Quelqu'un a des pensées? Tout est utile. Merci d'avance!

Pour changer l'icône du marqueur qui a sélectionné et pour ne pas sélectionné ce que j'ai fait, d'abord j'ajoute tout le GMSMarker dans un tableau.Après cette fonction de délégué à l'intérieur didTapMarker: J'ai le marqueur sélectionné et change l'icône de ce marqueur

  - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker { marker.icon=[UIImage imageNamed:@"selectedicon.png"];//selected marker for (int i=0; i<[markerArray count]; i++) { GMSMarker *unselectedMarker=markerArray[i]; //check selected marker and unselected marker position if(unselectedMarker.position.latitude!=marker.position.latitude && unselectedMarker.position.longitude!=marker.position.longitude) { unselectedMarker.icon=[UIImage imageNamed:@"unselectedicon.png"]; } } return NO; } 

Cela fonctionne pour moi.

Juste au cas où quelqu'un viendrait voir cela, j'ai résolu ce problème en utilisant ma propre méthode et mes propres variables. J'ai utilisé deux variables globales qui sont: GMSMarker *selectedMarker et BOOL isMarkerActive . À l'intérieur de mapview:markerInfoWindow Je vérifie si le marqueur est actif, si c'est le cas, il y en avait un actif avant celui-ci alors allez unhighlight ce marqueur. Après que j'ai mis le marqueur en cours est le marqueur sélectionné, mettre le bool à vrai, puis mettre en évidence ce marqueur, comme indiqué ci-dessous.

 if(self.isMarkerActive == TRUE){ [self unhighlightMarker:self.selectedMarker]; } self.selectedMarker = marker; self.isMarkerActive = TRUE; [self highlightMarker:marker]; 

Dans la méthode highlightMarker, je vérifie si le marqueur envoyé est égal au marqueur sélectionné de la carte

 -(void)highlightMarker:(GMSMarker *)marker{ if(self.mapView.selectedMarker isEqual:marker]){ marker.icon = [UIImage imageNamed:@"marker-selected-icon"]; } } 

Faites de même dans la méthode unhighlightMarker

 -(void)unhighlightMarker:(GMSMarker* )marker{ marker.icon = [UIImage imageNamed:@"marker-icon"]; } 

Enfin, je vérifie pour les robinets sur la carte et voir si le bool est vrai et que le marqueur sélectionné de la carte n'est pas égal à zéro

 - (void)mapView:(GMSMapView *)amapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate{ if(self.isMarkerActive == TRUE){ if(amapView.selectedMarker != nil){ self.isMarkerActive = FALSE; [self unhighlightMarker:self.selectedMarker]; self.selectedMarker = nil; amapView.selectedMarker = nil; } } } 

J'espère que cela aide quelqu'un d'autre là-bas.