Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change Google Maps' Selected Marker or change marker's color? [iOS]

I am wondering if there is a way to change the color or image of the selected marker and then change it back when it is not selected anymore. I see that Yelp, which uses Apple Maps, changes the color/image of the selected marker and then back to the original once that one is no longer selected and was wondering if the Google Map iOS SDK had something similar or if someone has come across this problem and found a solution.

What I have tried:

I have looked through Google's Documentation on Markers (found here) and see that they have marker.opacity which changes the opacity and marker.icon = [GMSMarker markerImageWithColor:[UIColor blackColor]]; which changes the marker's color.

I have tried to manually change it in -(UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker; by adding this line marker.icon = [GMSMarker markerImageWithColor: [UIColor differentColor]]; or this line marker.icon = [UIImage imageNamed:@"differentColorImage"]; but when you tap out of the marker/info-window, the image/color remains the same.

Anyone have any thoughts? Anything helps. Thanks in advance!

like image 678
Chris Avatar asked Feb 20 '14 22:02

Chris


1 Answers

To change icon of marker that selected and for not selected what i did was, First I add all the GMSMarker in an array.After that inside delegate function didTapMarker: I got selected marker and change the icon of that marker

     - (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;
       }

This is working for me.

like image 156
Sefi Avatar answered Sep 28 '22 20:09

Sefi