1
我有一个项目,我需要根据我们得到的位置数组在地图上显示一些标记。我们使用自定义标记引脚而不是默认值。一个要求是,如果我们放大超过某个缩放阈值,我们需要显示更大的标记图标。所以我们有一个小针图像和一个大针图像。基于缩放级别,我们需要显示更大或更小。我明白一种方法是清除所有标记并重新添加它们。但是,由于其他一些挑战,该解决方案对我们无效。我需要简单地替换标记图标图像。以下是我的代码:iOS谷歌地图SDK替换标记图标
-(void)updateMarkerImagePinSize {
NSLog(@"Update Marker Image called");
//[self.mapView clear];
UIImage *pinImage;
AtmLocations *atmLocations = [ATMLocatorManager sharedATMLocatorManager].atmLocations;
CLLocationCoordinate2D searchedAddressCoordinate = CLLocationCoordinate2DMake(atmLocations.locations.startLatitude, atmLocations.locations.startLongitude);
[self addSearchLocationMarkerToMap:searchedAddressCoordinate];
NSArray *locationArray = atmLocations.locations.location;
if (locationArray == nil || [locationArray count] == 0){
return;
}
for (Location *location in locationArray) {
CLLocationCoordinate2D markerCoordinate = CLLocationCoordinate2DMake([[[location attributes] latitude] doubleValue], [[[location attributes] longitude] doubleValue]);
GMSMarker *marker = [GMSMarker markerWithPosition:markerCoordinate];
if ([location.attributes.locationType isEqualToString:@"ATM"]) {
if (self.mapView.camera.zoom < kZoomThresoldForMarkerImageSizeChange) {
pinImage = [UIImage imageNamed:@"atm_pin_small"];
} else {
pinImage = [UIImage imageNamed:@"atm_pin"];
}
} else {
if (self.mapView.camera.zoom < kZoomThresoldForMarkerImageSizeChange) {
pinImage = [UIImage imageNamed:@"office_pin_small"];
} else {
pinImage = [UIImage imageNamed:@"office_pin"];
}
}
marker.map = nil;
marker.icon = pinImage;
marker.map = self.mapView;
}
}
不过,我所面临的问题是,无论是标记图标图像依然存在。我该如何更换标记图像而不显示两者?