如何向 GMSMarker 添加阴影?
How to add shadow to a GMSMarker?
我正在尝试向我的 GMSMapView 上的标记添加一些 shadow,但配置 GMSMarkerLayer 的阴影属性似乎没有任何效果。
GMSMarker *marker = [[GMSMarker alloc] init];
[marker setMap:self.mapView];
marker.snippet = @"Description";
marker.title = @"Title";
marker.position = busData.location.coordinate;
marker.icon = [UIImage imageNamed:@"BusMarker"];
marker.layer.shadowOpacity = 0.7;
marker.layer.shadowOffset = CGSizeMake(0, 3);
marker.layer.shadowRadius = 5.0;
marker.layer.shadowColor = [UIColor blackColor].CGColor;
我正在设置与 CALayer 对象相同的属性,因为 GMSMarkerLayer 是 CALayer 的子类。
我是做错了什么还是这是一个错误?我正在使用 SDK 版本 1.10.0.
这里要了解的是 Google iOS 上的地图是在 OpenGL 中实现的。因此,更改 GMSMarkerLayer 的默认属性没有视觉效果。抱歉。
您可以使用 iconView
属性 并在该视图内绘制阴影(保持在 iconView
的范围内)。
不是实际的,但它是答案:
-(UIImage *)makeShadowImage:(UIImage *) image;
{
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height);
imageLayer.contents = (id) image.CGImage;
[imageLayer setShadowColor:[[UIColor grayColor] CGColor]];
[imageLayer setShadowOpacity:0.5];
[imageLayer setShadowOffset:CGSizeMake(0, 0)];
[imageLayer setShadowRadius:4.0];
imageLayer.masksToBounds = YES;
UIGraphicsBeginImageContext(image.size);
[imageLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return roundedImage;
}
我正在尝试向我的 GMSMapView 上的标记添加一些 shadow,但配置 GMSMarkerLayer 的阴影属性似乎没有任何效果。
GMSMarker *marker = [[GMSMarker alloc] init];
[marker setMap:self.mapView];
marker.snippet = @"Description";
marker.title = @"Title";
marker.position = busData.location.coordinate;
marker.icon = [UIImage imageNamed:@"BusMarker"];
marker.layer.shadowOpacity = 0.7;
marker.layer.shadowOffset = CGSizeMake(0, 3);
marker.layer.shadowRadius = 5.0;
marker.layer.shadowColor = [UIColor blackColor].CGColor;
我正在设置与 CALayer 对象相同的属性,因为 GMSMarkerLayer 是 CALayer 的子类。
我是做错了什么还是这是一个错误?我正在使用 SDK 版本 1.10.0.
这里要了解的是 Google iOS 上的地图是在 OpenGL 中实现的。因此,更改 GMSMarkerLayer 的默认属性没有视觉效果。抱歉。
您可以使用 iconView
属性 并在该视图内绘制阴影(保持在 iconView
的范围内)。
不是实际的,但它是答案:
-(UIImage *)makeShadowImage:(UIImage *) image;
{
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height);
imageLayer.contents = (id) image.CGImage;
[imageLayer setShadowColor:[[UIColor grayColor] CGColor]];
[imageLayer setShadowOpacity:0.5];
[imageLayer setShadowOffset:CGSizeMake(0, 0)];
[imageLayer setShadowRadius:4.0];
imageLayer.masksToBounds = YES;
UIGraphicsBeginImageContext(image.size);
[imageLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return roundedImage;
}