更改Google地图的选定标记或更改标记的颜色?

我想知道是否有方法来改变所选标记的颜色或图像,然后将其更改回来,当它不被选中了。 我看到使用Apple Maps的Yelp会改变所选标记的颜色/图像,然后在不再select该标记的情况下返回到原始图像,并且想知道Google Map iOS SDK是否有类似的东西,或者是否有人遇到过这个问题,并find了解决办法。

我曾经尝试过:

我已经通过谷歌的关于标记的文件( 在这里find ),看看他们有marker.opacity这改变了不透明度和marker.icon = [GMSMarker markerImageWithColor:[UIColor blackColor]]; 这改变了标记的颜色。

我试图手动改变它-(UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker; 通过添加此行marker.icon = [GMSMarker markerImageWithColor: [UIColor differentColor]]; 或这一行marker.icon = [UIImage imageNamed:@"differentColorImage"]; 但是当您点击标记/信息窗口时,图像/颜色保持不变。

任何人有任何想法? 任何帮助。 提前致谢!

要更改所选标记的图标,而不是select我所做的是,首先我将所有的GMSMarker添加到一个数组中。然后在委托函数didTapMarker中:我得到选定的标记,并更改该标记的图标

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

这是为我工作。

只要有人来看到这一点,我解决了这个问题,使用我自己的方法和自己的variables。 我使用了两个全局variables: GMSMarker *selectedMarkerBOOL isMarkerActive 。 在mapview:markerInfoWindow我检查标记是否是活动的,如果是这样就意味着在这之前有一个活动,所以不要高亮那个标记。 之后,我将当前标记设置为所选标记,将bool设置为true,然后突出显示该标记,如下所示。

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

在highlightMarker方法中,我检查发送的标记是否等于地图所选的标记

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

在unighighMarker方法中做同样的事情

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

最后,我检查地图上的水龙头,看看布尔是否为真,地图的选定标记不等于零

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

希望这可以帮助其他任何人。